iOS - 在 UITabBar 上方获得所需的阴影

Posted

技术标签:

【中文标题】iOS - 在 UITabBar 上方获得所需的阴影【英文标题】:iOS - Getting desired shadow above UITabBar 【发布时间】:2016-05-20 05:04:39 【问题描述】:

我正在尝试让我的标签栏阴影看起来像这张图片中看到的那样:

这样做的最佳方法是什么?我正在使用objective-c 谢谢

【问题讨论】:

【参考方案1】:

您可以使用以下代码给任何 UI 对象添加阴影

tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 2
tabBar.layer.shadowColor = UIColor.black.cgColor
tabBar.layer.shadowOpacity = 0.3

这里我为你的 tabControl 对象举例。

【讨论】:

谢谢,这正是我想要的。如果有人想知道,为了让它看起来像那个图像,我使用了 8 的阴影半径和 0.3 的阴影不透明度。再次感谢您!【参考方案2】:

对于 Swift 5:

tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 2
tabBar.layer.shadowColor = UIColor.black.cgColor
tabBar.layer.shadowOpacity = 0.3

【讨论】:

【参考方案3】:

斯威夫特 4:

tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 2
tabBar.layer.shadowColor = UIColor.black.cgColor
tabBar.layer.shadowOpacity = 0.3

【讨论】:

【参考方案4】:

我更喜欢使用专用的标签栏方法。

// Set `backgroundImage` to be able to use `shadowImage`
tabBar.backgroundImage = UIImage.imageWithColor(.white)
tabBar.shadowImage = #imageLiteral(resourceName: "tab_bar_shadow") // 2x34pt works for me

【讨论】:

【参考方案5】:

斯威夫特 4:

使用此扩展程序

extension UIImage 
class func colorForNavBar(color: UIColor) -> UIImage 
    //let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)

    let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 1.0, height: 1.0))

    UIGraphicsBeginImageContext(rect.size)
    let context = UIGraphicsGetCurrentContext()

    context!.setFillColor(color.cgColor)
    context!.fill(rect)

    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()


     return image!
     

使用 RGB 设置阴影颜色

//Set BackgroundColor
 UITabBar.appearance().backgroundImage = UIImage.colorForNavBar(color: .white)

//Set Shadow Color
 UITabBar.appearance().shadowImage = UIImage.colorForNavBar(color: UIColor.init(red: 120/255.0, green: 120/255.0, blue: 120/255.0, alpha: 1.0))

【讨论】:

请解释colorForNavBar 方法。 @AlexeySavchenko 扩展添加...!【参考方案6】:
self.tabBarController.tabBar.shadowImage = [[UIImage alloc] init];
self.tabBarController.tabBar.backgroundImage = [[UIImage alloc] init];
self.tabBarController.tabBar.backgroundColor = [UIColor whiteColor];
self.tabBarController.tabBar.layer.shadowOffset = CGSizeMake(0, 0);
self.tabBarController.tabBar.layer.shadowRadius = 1;
self.tabBarController.tabBar.layer.shadowColor = [UIColor blackColor].CGColor;
self.tabBarController.tabBar.layer.shadowOpacity = 0.2;

【讨论】:

【参考方案7】:

试试这个

 [[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];

【讨论】:

以上是关于iOS - 在 UITabBar 上方获得所需的阴影的主要内容,如果未能解决你的问题,请参考以下文章

无法在 C++ 中获得所需的结果

确定 UITabBar 项属于哪个 UIViewController 子类

如何获得 vuejs 所需的输入

触发重大位置变化更新和给定位置准确性所需的行进距离

如何在颤动的列表中获得所需的数据?

在javascript中创建对象数组以获得所需的结果[关闭]