Перемещение изображения UITabBarItem вниз?
Обычно на каждой вкладке UITabBar
у вас есть небольшое изображение и заголовок, называя вкладку. Изображение расположено/центрировано в направлении верхней части вкладки, чтобы разместить заголовок под ним. Мой вопрос: если вы хотите иметь tabBar только с изображением, и нет заголовка, есть способ переместить изображение вниз, чтобы он лучше располагался на вкладке?
Сейчас я использую (см. ниже):
[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
но предпочтет использовать более крупное изображение без заголовка, на данный момент, если я сделаю изображение размером более 70 пикселей @2x, он начнет обрезать верхнюю часть UITabBar
, оставив при этом много неиспользуемого пространства внизу.
Ответы
Ответ 1
Попробуйте настроить tabBarItem
imageInsets
(для перемещения изображения значка) и присвоить заголовку контроллеров значение nil (так что заголовок не отображается). Поместите что-то вроде этого в метод -init
или -viewDidLoad
в диспетчере вида:
Objective-C
self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;
Swift
self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil
UITabBarItem
является подклассом UIBarItem
, обладающим свойством UIEdgeInsets imageInsets
. Играйте немного с вставками, пока они не выглядят хорошо (в зависимости от изображений значков на вкладке)
Ответ 2
Вы можете сделать это и с помощью раскадровки. Выберите свой tabbaritem, перейдите к инспектору размера и назначьте соответствующие вставки.
![введите описание изображения здесь]()
* Демонстрируется на Xcode, версия 7.3.1 (7D1014)
Ответ 3
Создайте подкласс UITabBarController
и в его viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
vc.tabBarItem.title = nil;
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
}];
}
Swift 3:
for vc in self.viewControllers! {
vc.tabBarItem.title = nil
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Ответ 4
Если вы используете Xamarin, это работает:
screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
Ответ 5
SWIFT 3.0
Вы можете установить lnsets изображения, установить верхнюю, левую, нижнюю и правую по желанию.
self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
Ответ 6
Для iOS 11 вам необходимо переопределить метод TraitCollection, кроме установки ImageInsets.
Добавьте метод в класс подкласса UITabBarController
public override UITraitCollection TraitCollection {
get {
return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
}
}