编辑导航栏的阴影线UIImageView无效

咕cake蛋糕

我试图更改导航栏的窄阴影栏,并使用以下代码:

if let hairline = findNavigationBarHairline(navigationBar)
{
    hairline.bounds.size.height = 5.0
    hairline.backgroundColor = UIColor.blueColor()
}

还有这个:

    func findNavigationBarHairline(view:UIView) -> UIImageView?
    {
        if let hairline = view as? UIImageView where hairline.bounds.size.height <= 1.0
        {
            return hairline
        }
        for subview in view.subviews
        {
            if let imageView = findNavigationBarHairline(subview)
            {
                return imageView
            }
        }
        return nil
    }

这成功找到了UIImageView这是阴影线,但是如果我尝试在此处进行任何更改,都将无效。设置大小/颜色后,这是代码中“图像视图”的位置:

(lldb) po hairline
<UIImageView: 0x126d21030; frame = (0 61.75; 320 5); userInteractionEnabled = NO; layer = <CALayer: 0x126d0b470>>

在这里可以看到高度为5,但仍以其原始大小和颜色显示。如果我使用XCode的视图层次结构显示并从那里转储图像视图,则结果如下:

> Printing description of $124: <UIImageView: 0x126d21030; frame = (0
> 64; 320 0.5); userInteractionEnabled = NO; layer = <CALayer:
> 0x126d0b470>

可以看出,它是同一对象,但是其高度是0.5,而不是5。为什么更改大小和颜色没有效果?(我也更改了UIImage,但这也没有任何效果)。

查尔斯·A

首先-您应该通过将图片设置为的shadowImage属性来执行此操作UINavigationBar那就是那个财产的目的。请注意,您必须为此设置自定义背景图片setBackgroundImage(_:forBarMetrics:)使用下面的代码,我能够创建没有阴影的白色半透明导航栏。请注意,白色图像只是一个白色像素,您可以轻松地在代码中轻松创建它。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    navigationController!.navigationBar.setBackgroundImage(UIImage(named: "white"), forBarMetrics: .Default)
    navigationController!.navigationBar.shadowImage = UIImage()
}

结果是:

在此处输入图片说明

第二-深入了解SDK提供的组件的视图层次结构通常不是最好的主意。您不能保证视图层次结构在将来的版本中不会更改(或者您可以在较早的iOS版本上使用此功能)。

话虽这么说,您正在做的事情最不可能起作用,因为backgroundColor在图像视图上设置a不会改变该图像视图正在渲染的图像。其次,Apple很可能使用Auto Layout来组织的子视图UINavigationBar,因此frame/bounds本质上将是派生数据,并且如果您更改了它,Auto Layout只会重置它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从导航栏中删除阴影线?

来自分类Dev

删除导航栏下方的阴影线而不删除栏颜色?

来自分类Dev

删除导航栏下方的阴影线而不删除栏颜色?

来自分类Dev

Matplotlib导航工具栏:删除“编辑曲线线和轴参数”

来自分类Dev

删除底部阴影引导导航栏

来自分类Dev

如何删除导航栏边框/阴影?

来自分类Dev

如何删除活动导航栏的阴影

来自分类Dev

无法从导航栏中删除阴影图像

来自分类Dev

插入UIImageView作为导航栏按钮

来自分类Dev

导航栏和主屏幕上的UIImageView

来自分类Dev

如何在导航栏的右侧添加UIImageView?

来自分类Dev

Bootstrap导航栏垂直分隔线

来自分类Dev

编辑html + css + js下拉导航栏

来自分类Dev

编辑器上方的Eclipse导航栏

来自分类Dev

滚动tableview时编辑导航栏的alpha

来自分类Dev

预成型后编辑导航栏

来自分类Dev

Magento 导航栏编辑 - RWD 主题

来自分类Dev

导航栏链接上没有阴影

来自分类Dev

如何将 UIImageView 放在导航栏上

来自分类Dev

引导导航栏底部的多余1px线并创建导航栏侧面间隙

来自分类Dev

使导航栏仅带有边框线

来自分类Dev

我的透明导航栏Bootstrap下方的白线

来自分类Dev

如何在导航栏中显示“编辑”按钮

来自分类Dev

如何调整导航栏标题和编辑后退按钮

来自分类Dev

如何从AppBar布局或工具栏的底部删除阴影或分隔线?

来自分类Dev

将阴影添加到工具栏分隔线

来自分类Dev

自动布局无效与Xib中的隐藏导航栏相关

来自分类Dev

线圆与阴影

来自分类Dev

如何在iOS 6中删除导航栏标题的默认阴影效果