• ios7 UIScrollView 尺寸问题


    假设在UINavigationController内设置一个UIViewControlller,而UIViewController的第一个子视图是UIScrollView的话,UIScrollview里面全部的subView都会发生下移,如图所看到的
    ios7 <wbr>UIScrollView <wbr>尺寸问题
    代码为

    - (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 <wbr>UIScrollView <wbr>尺寸问题

  • 相关阅读:
    HttpURLConnection中使用代理(Proxy)及其验证(Authentication)
    Java获取随机数的几种方法
    史上最全的java随机数/字符串生成算法(转)
    httpClient中的三种超时设置小结
    几个性能测试工具
    硬件知识
    北风风hadoop课程体系
    IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)
    .net framework client profile
    Resharper中注释代码的快捷键
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4470451.html
Copyright © 2020-2023  润新知