斯威夫特:我的 UINavigationBar 背景图像传播得太远了

Posted

技术标签:

【中文标题】斯威夫特:我的 UINavigationBar 背景图像传播得太远了【英文标题】:Swift: My UINavigationBar's background image is spreading too far down 【发布时间】:2015-07-16 21:15:06 【问题描述】:

这是我的导航控制器代码:

@IBOutlet weak var navBar: UINavigationBar!
    override func viewDidLoad() 
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        navBar.setBackgroundImage(UIImage(named: "top_splash")!.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0), resizingMode: .Stretch), forBarMetrics: .Default)
    

但是,我的背景图像在情节提要的第一个视图上展开,我再也看不到它了。这是它的样子:

如您所见,导航栏的大小几乎翻了一番,以适应这张图片。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

问题是top_splash 太大而无法开始。您可以将图像拉伸为resizableImage,但不能压缩它。从小于导航栏标准高度(44 磅)的图像开始,一切都会好起来的。

或者,您可以将导航栏的 clipsToBounds 设置为 true,但随后会发生其他不好的事情 - 例如,它无法正确伸展​​到状态栏后面。

【讨论】:

如果我打算为 iPad 制作横向应用程序,uinavigationBar 会有多大? 没关系,不是吗?只要您的图像更小,它就会伸展得更大。问题是它永远不会比开始时更小 确实如此,我想在不损失很多质量的情况下调整图像大小 好吧,我会说从 32 分开始,看看会发生什么。但是如果要出现状态栏,也许你可以做 32+20 = 52。试试看...

以上是关于斯威夫特:我的 UINavigationBar 背景图像传播得太远了的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UINavigationBar 不会动画?

为啥我的 UINavigationbar 被隐藏了?

UIBarButton 未在 UINavigationBar 中显示

为啥我的 CAShapeLayer 没有动画? (iOS 斯威夫特)

在我的 UINavigationBar 中为我的标题添加图像而不是标题

rightBarButtonItem.enabled 从 uinavigationbar 中删除我的自定义层