Как изменить верхнюю границу моего UITabBar?
Я хочу, чтобы UITabBar имел верхнюю границу ширины 5.0. Граница должна быть желтого цвета.
Я не хочу никаких границ слева/снизу/справа.
Граница панели вкладок должна быть плоской (никаких теней или чего-либо подобного).
Как удалить тень (изображение)?
Ответы
Ответ 1
Вы можете сделать это таким образом в своем FirstViewController.swift:
self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clearColor().CGColor
self.tabBarController?.tabBar.clipsToBounds = true
И результат будет:
До:
![введите описание изображения здесь]()
После:
![введите описание изображения здесь]()
Надеюсь, что это поможет.
EDIT:
Вы можете установить фоновое изображение таким образом:
UITabBar.appearance().backgroundImage = UIImage(named: "yourImageWithTopYellowBorder.png")
Ответ 2
Это полное решение, составленное из разных ответов 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))
Ответ 3
Если вы хотите полностью удалить панель вкладок, поместите это в свой AppDelegate:
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
Ответ 4
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
Ответ 5
UIView *borderLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 5.0)];
borderLine.backgroundColor = [UIColor yellowColor];
[self.tabBarController.tabBar addSubview:borderLine];
Это способ добавить границу к UITabBar
, которой я следую.
Он работает классно.
Ответ 6
Просто установите для UITabBar backgroundImage и shadowImage четкий цвет:
tabBar.shadowImage = UIImage.init(color: UIColor.clear)
tabBar.backgroundImage = UIImage.init(color: UIColor.clear)
Ответ 7
В iOS 6 есть свойство с именем shadowImage
. Вы можете изменить это, чтобы изменить верхнюю границу. Например, вы можете использовать изображение 1x1px с одним цветом, чтобы изменить верхнюю границу этого цвета:
UITabBar.appearance().shadowImage = UIImage(named: "TabBarShadow")
Вы также можете установить его как просто UIImage()
, чтобы полностью удалить верхнюю границу.
UITabBar.appearance().shadowImage = UIImage()
Чтобы ответить на вопрос о границе 5px, это можно сделать, используя изображение 1x5px. Как правило, размер изображения не ограничен, и он будет просто повторяться (так что вы могли бы иметь пунктирную линию, например, имея изображение 4x5px, где первые 2x5px черные, а следующие 2x5px прозрачны). Обратите внимание: если вы используете это, он выходит за пределы UITabBar, поэтому содержимое будет заходить за изображение, если вы не измените границы представления.
Ответ 8
Это теневое изображение (свойство) вкладки. Попробуйте следующие решения и посмотрите.
** Swift **
//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil
// or
// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()
** Objective-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?
Значение по умолчанию равно нулю. Когда не-nil, вместо теневого изображения вместо теневое изображение по умолчанию. Чтобы пользовательский тень отображалась, пользовательский фоновое изображение также должно быть установлено с -setBackgroundImage: (если используется фоновое изображение по умолчанию, теневое изображение по умолчанию будет используется).
Ответ 9
Вот как я это сделал. Я добавил подпредставление поверх UITabBar.
var lineView = UIView(frame: CGRect(x: 0, y: 0, width:tabBarController.tabBar.frame.size.width, height: 1))
lineView.backgroundColor = UIColor.yellow
tabBarController.tabBar.addSubview(lineView)