sky*_*der 23 iphone user-interface uinavigationbar uitableview ios7
布局有问题.
以下是它在iOS6上的外观:

以下是iOS7的外观:

但没关系.就像在Apple的iOS7 TransitionGuide中描述的那样,
我又写了一笔- (void)viewDidLoad
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
它现在看起来像这样:

有什么建议?我的布局有什么问题?我想要坚实的蓝色UINavigationBar.并且不知道,为什么这个的顶部是透明的.有任何想法,为什么它看起来如此奇怪?我怎样才能解决这个问题?
nul*_*ull 31
尝试 navigationBar.translucent = NO;
它是YES默认的.
从UINavigationBar文档:
iOS 7上的新行为.默认为YES.您可以通过将属性设置为NO来强制使用不透明背景.如果导航栏具有自定义背景图像,则默认值从图像的Alpha值推断 - 如果它具有alpha <1.0的任何像素如果您将setTranslucent:YES发送到具有不透明自定义背景图像的栏,则它将适用系统不透明度小于1.0的图像.如果您将setTranslucent:NO发送到具有半透明自定义背景图像的条形图,它将使用条形图的barTintColor(如果已定义)为图像提供不透明背景,如果barTintColor为nil,则为UIBarStyleBlack提供黑色或UIBarStyleDefault为白色.
将此行添加到"view will appear"方法中(如果不存在,请键入以下内容添加:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animate];
}
Run Code Online (Sandbox Code Playgroud)
)
然后,在viewWillAppear的底部,在[self viewWillAppear:]行下面,添加以下代码:
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];
Run Code Online (Sandbox Code Playgroud)
这将使顶部栏(导航栏)变得不透明.在iOS 7中,Obj-C现在对导航条是否设置为不透明有不同的反应,这是一个很好的方法来保证它在iOS 6和7中都有效(有一些问题只是:
navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)
)
希望这有帮助,当我将应用程序转换为iOS 7时,我遇到了同样的问题,并且需要很长时间才能找到解决方案!
| 归档时间: |
|
| 查看次数: |
16854 次 |
| 最近记录: |