斯威夫特:我的 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 背景图像传播得太远了的主要内容,如果未能解决你的问题,请参考以下文章
UIBarButton 未在 UINavigationBar 中显示
为啥我的 CAShapeLayer 没有动画? (iOS 斯威夫特)