【移动应用开发技术】ios7 中关于导航切换影响UIScrollView的问题_第1页
【移动应用开发技术】ios7 中关于导航切换影响UIScrollView的问题_第2页
【移动应用开发技术】ios7 中关于导航切换影响UIScrollView的问题_第3页
【移动应用开发技术】ios7 中关于导航切换影响UIScrollView的问题_第4页
【移动应用开发技术】ios7 中关于导航切换影响UIScrollView的问题_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】ios7中关于导航切换影响UIScrollView的问题

在iOS7中,如果某个UIViewController的self.view第一个子视图是UIScollView,同时当这个UIViewController被push或initWithRootController成为UINavigationController控制的Controller时,这个UIViewController的view的子视图UIScollView的所有子视图,都会被下移64px。

这个下移64px的前提是navigationBar和statusBar没有隐藏。因为为statusBar默认的Height是20px,而navigatiBar

默认的Height是44px。下面来比较一下实例:

不使用导航的界面跳转

1.在AppDelegate.m文件中:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions

{

self.window=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];

self.window.backgroundColor=[UIColorwhiteColor];

//下面两行为增加的代码

ViewController*rootViewController=[[ViewControlleralloc]init];

[self.windowsetRootViewController:rootViewController];

[self.windowmakeKeyAndVisible];

returnYES;

}

2.在ViewController.m中:-(void)viewDidLoad

{

[superviewDidLoad];

UIScrollView*scrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(30.0,

64.0,260.0,300.0)];

[scrollViewsetBackgroundColor:[UIColorredColor]];

UIView*view=[[UIViewalloc]initWithFrame:scrollView.bounds];

[viewsetBackgroundColor:[UIColorblueColor]];

[scrollViewaddSubview:view];

[self.viewaddSubview:scrollView];

}

3.运行后的结果:这种情况下,scrollView并未受影响。4.现在使用UINavigationController,

将开始AppDelegate.m增加的那两行代码修改成:

ViewController*rootViewController=[[ViewControlleralloc]init];

UINavigationController*navController=[[UINavigationControlleralloc]

initWithRootViewController:rootViewController];

[self.windowsetRootViewController:navController];

5.现在再次运行程序:如结果显示,scrollView背景色为蓝色的子视图位置自动下移了。而这个下移的距离刚好是64.0px。解决方法:

第一种:在ViewController的init的方法中增加一行代码:self.automaticallyAdjustsScrollViewInsets=NO;

第二种:让UIScrollView不要成为ViewController的View的第一个子视图。具体操作:将viewDidLoad方法修改成如下:-(void)viewDidLoad

{

[superviewDidLoad];

UIView*firstSubView=[[UIViewalloc]initWithFrame:self.view.bounds];

[self.viewaddSubview:firstSubView];

UIScrollView*scrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(30.0,

64.0,260.0,300.0)];

[scrollViewsetBackgroundColor:[UIColorredColor]];

UIView*view=[[UIViewalloc]initWithFrame:scrollView.bounds];

[viewsetBackgroundColor:[UIColorblueColor]];

[scrollViewaddSubview:view];

[self.viewaddSubview:scrollView];

}

第三种:将UIScorllView的子视图上移64.0px。修改viewDidLoad方法:UIScrollView*scrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(30.0,

64.0,260.0,300.0)];

[scrollViewsetBackgroundColor:[UIColorredColor]];

CGRectviewFrame=CGRectMake(0,-64.0,CGRectGetWidth(scrollView.frame),

CGRectGetHeight(scrollView.frame));

UIView*view=[[UIViewalloc]initWithFrame:viewFrame];

[viewsetBackgroundColor:[UIColorblueColor]];

[scr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论