it-roy-ru.com

Как я могу изменить верхнюю границу моего UITabBar?

Я бы хотел, чтобы UITabBar имел верхнюю границу шириной 5.0. Граница должна быть желтого цвета ... Я не хочу, чтобы какие-либо левые/нижние/правые границы.

Граница панели вкладок должна быть плоской (без теней или чего-либо подобного).

Как я могу удалить теневую (изображение) линию?

12
TIMEX

Вы можете сделать это таким образом в вашем FirstViewController.Swift:

self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clearColor().CGColor
self.tabBarController?.tabBar.clipsToBounds = true

И результат будет:

До:

 enter image description here

После:

 enter image description here

Надеюсь, поможет.

Правка:

Вы можете установить фоновое изображение следующим образом:

UITabBar.appearance().backgroundImage = UIImage(named: "yourImageWithTopYellowBorder.png")
28
Dharmesh

Это полное решение, составленное из разных SO ответов, которое сработало для меня ( Swift 3 ):

// The tabBar top border is done using the `shadowImage` and `backgroundImage` properties.
// We need to override those properties to set the custom top border.
// Setting the `backgroundImage` to an empty image to remove the default border.
tabBar.backgroundImage = UIImage()
// The `shadowImage` property is the one that we will use to set the custom top border.
// We will create the `UIImage` of 1x5 points size filled with the red color and assign it to the `shadowImage` property.
// This image then will get repeated and create the red top border of 5 points width.

// A helper function that creates an image of the given size filled with the given color.
// http://stackoverflow.com/a/39604716/1300959
func getImageWithColor(color: UIColor, size: CGSize) -> UIImage
{
    let rect = CGRect(Origin: CGPoint(x: 0, y: 0), size: CGSize(width: size.width, height: size.height))
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(rect)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image
}

// Setting the `shadowImage` property to the `UIImage` 1x5 red.
tabBar.shadowImage = getImageWithColor(color: UIColor.red, size: CGSize(width: 1.0, height: 5.0))
5
iurii

Если вы хотите полностью удалить панель вкладок, поместите это в свой AppDelegate:

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
4
James

Swift 3

Мне нужны были цвета рамки (и цвета линий и веса), чтобы соответствовать другим элементам в моем приложении, так что это работало для меня в моем пользовательском UITabBarController viewDidLoad:

tabBar.layer.borderWidth = 0.3
tabBar.layer.borderColor = UIColor(red:0.0/255.0, green:0.0/255.0, blue:0.0/255.0, alpha:0.2).cgColor
tabBar.clipsToBounds = true
3
A.J. Hernandez
    UIView *borderLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 5.0)];
    borderLine.backgroundColor = [UIColor yellowColor];  
    [self.tabBarController.tabBar addSubview:borderLine];

Это способ добавить границу к UITabBar, за которым я следую . Он работает круто.

2
ABHILASH P

Просто установите для UITabBar backgroundImage и shadowImage чистый цвет:

tabBar.shadowImage = UIImage.init(color: UIColor.clear)
tabBar.backgroundImage = UIImage.init(color: UIColor.clear)
1
evya

Существует свойство с именем shadowImage, которое было представлено в iOS 6. Вы можете изменить это, чтобы изменить верхнюю границу. Например, вы можете использовать изображение размером 1x1px с одним цветом, чтобы изменить верхнюю границу на этот цвет:

UITabBar.appearance().shadowImage = UIImage(named: "TabBarShadow")

Вы также можете установить его просто как UIImage(), чтобы полностью удалить верхнюю границу.

UITabBar.appearance().shadowImage = UIImage()

Чтобы ответить на ваш вопрос о границе 5px, это можно сделать с помощью изображения размером 1x5px. Кажется, что нет ограничения на размер изображения, и оно будет просто повторяться (так что вы можете иметь пунктирную линию, например, имея изображение 4x5px, где первые 2x5px черные, а следующие 2x5px прозрачные). Обратите внимание, что если вы используете это, оно выходит за пределы UITabBar, поэтому контент будет идти за изображением, если вы не измените границы просмотра.

0
Ben Dodson

Это теневое изображение (свойство) вкладки. Попробуйте следующие решения и посмотрите.

** Свифт **

//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil

// or 

// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()

** Цель-C **

//Remove shadow image by assigning nil value.
[[UITabBar appearance] setShadowImage: nil];

// or 

// Assing UIImage instance without image reference
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];


Вот руководство Apple для shadowImage .

@available(iOS 6.0, *)
open var shadowImage: UIImage?

По умолчанию это ноль. Когда не ноль, пользовательское теневое изображение, чтобы показать вместо теневое изображение по умолчанию. Для показа пользовательской тени - пользовательская фоновое изображение также должно быть установлено с -setBackgroundImage: (если используется фоновое изображение по умолчанию, теневое изображение по умолчанию будет используется).

0
Krunal