Sal*_*idi 61 iphone uiview navigationbar ios ios7
早些时候,我在我的项目中使用iOS 6.1.最近我已经切换到iOS 7.因为,我知道很多变化,我更新了我的代码..但我发现了一个奇怪的行为.我在每个屏幕上的视图都隐藏在导航栏下方.重新定位视图解决了iOS7的问题,但是为旧的iOS版本带来了问题.
任何人都可以解释我,原因是什么,为什么会发生?在iOS 7中发生了哪些变化导致了这个问题?
任何帮助,将不胜感激..
nul*_*ull 124
试试navigationBar.translucent = NO;
,YES
默认情况下在iOS7中.
看一下这部分UINavigationBar
文档也很好:
iOS 7上的新行为.默认为YES.您可以通过将属性设置为NO来强制使用不透明背景.如果导航栏具有自定义背景图像,则默认值从图像的Alpha值推断 - 如果它具有alpha <1.0的任何像素如果您将setTranslucent:YES发送到具有不透明自定义背景图像的栏,则它将适用系统不透明度小于1.0的图像.如果您将setTranslucent:NO发送到具有半透明自定义背景图像的条形图,它将使用条形图的barTintColor(如果已定义)为图像提供不透明背景,如果barTintColor为nil,则为UIBarStyleBlack提供黑色或UIBarStyleDefault为白色.
编辑:
如果在具有较旧iOS版本的设备/模拟器中运行项目,则设置"navigationBar.translucent"值会导致异常.
所以你可以像这样添加一个版本检查:
float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0)
{
navigationBar.translucent = NO;
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是设置:
vc.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
vc.edgesForExtendedLayout = []
Run Code Online (Sandbox Code Playgroud)
Dan*_*oad 44
您可以在viewController的导航栏下停止您的视图:
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您的应用中不需要半透明导航栏,则可以在iOS7和iOS6上修复此问题而无需更改代码.
在故事板中选择您的导航控制器,然后打开"属性检查器".然后在"模拟指标"下将"顶栏"设置为某个值但不是"半透明":
现在,您在iOS6和iOS7上的视图将具有与以前相同的定位.
这个清单上的第7点就可以了.您仍然需要将它包装在iOS 7检查代码中,如@ null的答案:
float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0) {
viewController.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
整篇文章对于转换到iOS 7的用户非常有用.
将此属性用于VC,以避免ur状态栏与VC Swift重叠:
self.edgesForExtendedLayout = []
Run Code Online (Sandbox Code Playgroud)
目标C.
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38403 次 |
最近记录: |