Может кто-нибудь сказать мне, пожалуйста, как я могу переместить заголовок UITabBarItem, например, на 2 пикселя вверх?
Как переместить заголовок UITabBarItem?
Ответы (5)
Решение:
UITabBarItem *item = [tabBar.items objectAtIndex:0];
item.titlePositionAdjustment = UIOffsetMake(0, -5.0);
item.setTitlePositionAdjustment(UIOffsetMake(0, -5.0))
(в XCode 6.1 доступна только функция установки)
- person average Joe; 22.01.2015
item.titlePositionAdjustment = UIOffset(horizontal:0,vertical:1000)
- person Philipp Otto; 21.09.2015
Обновление для Свифт 3
Поместите этот код внутри UITabBarController
:
UITabBarItem.appearance().titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -5)
Кредит принадлежит Тиму Брауну < /а>
Swift 4 Как и я, если вы создаете контроллер панели вкладок внутри какого-либо другого контроллера сразу после добавления всего контроллера, вы можете просмотреть элементы панели вкладок и изменить заголовок, положение и шрифт.
for (index,tabBarItem) in tabBarController.tabBar.items!.enumerated() {
tabBarItem.image = nil //if you only want title and no Image
tabBarItem.title = titleArray[index] //setting your title based on some array
let attributes = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 20)] // changeing font and height of the text
tabBarItem.setTitleTextAttributes(attributes, for: .normal)
tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -10.0) // updating the title positon
}
Вы можете использовать tabbarItem.titlePositionAdjustment
для настройки.
Если вы хотите сделать с этим гораздо больше, откройте подвид tabbaritem и найдите ярлык на tabbar.subviews
. Например
int i = 0;
for (NSObject *view in self.tabBar.subviews)
{
MTLog(@"%@", view);
if ([view respondsToSelector:@selector(subviews)])
{
for (NSObject *childView in ((UIView *)view).subviews)
{
if ([childView isKindOfClass:[UILabel class]])
{
if (i > (titlesArray.count - 1))
break;
UILabel *label = (UILabel *)childView;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:titlesArray[i] attributes:@{
NSFontAttributeName:[UIFont systemFontOfSize:9]
}];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setMinimumLineHeight:26];
[style setAlignment:NSTextAlignmentRight];
[attributedString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, attributedString.length)];
label.attributedText = attributedString;
i++;
}
}
}
}
Вы не можете... вы можете обойти это, но это будет непросто и может сломать ваше приложение при будущих обновлениях iOS.
Лучше всего было бы создать свою собственную систему UITabBar... вот хорошее руководство, на которое вы могли бы взглянуть.
http://idevrecipes.com/2011/01/04/how-does-the-twitter-iphone-app-implement-a-custom-tab-bar/
if ([item respondsToSelector:@selector(setTitlePositionAdjustment:)]) { item.titlePositionAdjustment = UIOffsetMake(0, -5.0); }
- person liamnichols; 04.05.2012