码迷,mamicode.com
首页 > 移动开发 > 详细

ios7 UIScrollView 尺寸问题

时间:2015-05-01 11:50:17      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

假设在UINavigationController内设置一个UIViewControlller,而UIViewController的第一个子视图是UIScrollView的话,UIScrollview里面全部的subView都会发生下移,如图所看到的
技术分享
代码为

- (void)viewDidLoad

{

    [super viewDidLoad];

 

    UIScrollView *tempScroll = [[UIScrollView allocinitWithFrame:CGRectMake(064320200)];

    [tempScroll setBackgroundColor:[UIColor grayColor]];

    [tempScroll setContentSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];

    [self.view addSubview:tempScroll];

 

    UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [tempButton setBackgroundColor:[UIColor redColor]];

    [tempButton setTitle:@"subView A" forState:UIControlStateNormal];

    [tempButton setFrame:CGRectMake(80080100)];

    

    NSLog(@"%d",tempScroll.subviews.count);

    [tempScroll addSubview:tempButton];

}

经过验证性的代码,我发现ios7有一个机制

在navigationBar,以及statusBar都显示的情况下,Navigation的当前VC,他的VC的view的子视图树的根部的第一个子视图,假设是Scrollview的话,这个scrollview的全部子视图都会被下移64个像素。

发现了这个机制之后,怎么去修正呢?

修正方案有两个

1、把scrollview的全部子视图上移64个像素。

    UIView *targetView = self.view;

    while (targetView.subviews.count >0 && ![targetView isKindOfClass:[UIScrollView class]]) {

        targetView = [targetView.subviews objectAtIndex:0];

    }

    if ([targetView isKindOfClass:[UIScrollView class]]) {

        NSLog(@"you are a scrollview");

        CGSize tempSize = ((UIScrollView *)targetView).contentSize;

        tempSize.height -= 64;

        [(UIScrollView *)targetView setContentSize:tempSize];

        for (UIView *subView in targetView.subviews) {

            CGRect tempRect = subView.frame;

            tempRect.origin.y -= 64;

            [subView setFrame:tempRect];

        }

 

    }

2、把scrollView更改地位,是它不是子视图树的根部第一个子视图。

- (void)viewDidLoad

{

    [super viewDidLoad];

 

    UIView *tempBackGround = [[UIView allocinitWithFrame:self.view.bounds];

    [self.view addSubview:tempBackGround];

    

    UIScrollView *tempScroll = [[UIScrollView allocinitWithFrame:CGRectMake(064320200)];

    [tempScroll setBackgroundColor:[UIColor grayColor]];

    [tempScroll setContentSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];

    [self.view addSubview:tempScroll];

 

    UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [tempButton setBackgroundColor:[UIColor redColor]];

    [tempButton setTitle:@"subView A" forState:UIControlStateNormal];

    [tempButton setFrame:CGRectMake(80080100)];

    

    NSLog(@"%d",tempScroll.subviews.count);

    [tempScroll addSubview:tempButton];


 

}

经过了修正如图所看到的

技术分享

ios7 UIScrollView 尺寸问题

标签:

原文地址:http://www.cnblogs.com/lcchuguo/p/4470451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!