移除UINavigationController的圆角边缘。

3
我该如何去掉UINavigationController顶部的圆角?是否有任何plist属性或需要通过编程来实现?
我想从以下这个样子: enter image description here 变成这个样子: enter image description here
3个回答

5

只需将状态栏样式从“黑色不透明”更改为“黑色半透明”,您的rootViewController的四个角就不会再被圆角化了。只要您没有设置视图控制器的属性wantsFullScreenLayout = YES,就不会在状态栏后面绘制任何内容。您的UIWindow必须具有backgroundColor = [UIColor blackColor],以便用户无法注意到状态栏不是真正的“黑色不透明”。


找到这个答案花了好长时间!谢谢,现在所有那些讨厌的角落都不见了。 - KyleStew

3
默认外观是底部图片中的外观。那么,您首先如何获得顶部图像的外观?我猜您将一张图片用作UINavigationBar的背景。找到该图像并替换为没有圆角的版本。
另一种选择是使用UINavigationBar子类。在这种情况下,您可以查找该子类并查看是否有类似于[self.layer setCornerRadius:3.0]的行,并将其删除。

不,情况并非如此,我的新项目默认都有这个角落。是的,你说得对,我在使用一张图片,但它没有角落。这种行为就像应用程序的默认属性! - Mateus
3
在iOS 6.0中,当您使用黑色状态栏时,会自动添加圆角。我不确定除非您使用默认的状态栏,否则是否可以去掉这些圆角。 - Sascha

2
我相信Sascha说的是对的,当你使用黑色状态栏时,圆角会自动添加。我注意到在我的一个新应用程序中,即使我没有在xib文件、info.plist文件甚至App Delegate中设置它,我的UINavigationController也有了圆角和黑色状态栏。
我进行了一个快速测试,并交换了我正在使用的UINavigationController/NavigationBar背景图像,发现导航栏颜色自动影响状态栏,进而将导航栏的圆角弯曲(奇怪)。
查看我的导航栏的快照(圆角纯粹是由我作为UINavigationController背景的图像的颜色生成的!)
所以我想在你的情况下,一个建议是尝试不同颜色的背景,看看是否有与我相同的结果。

只是以防万一有人想知道 - 不,我的原始源图像没有圆角。 - noobzilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接