zoukankan      html  css  js  c++  java
  • iOS 6 Auto Layout NSLayoutConstraint 界面布局

    来自:http://www.devdiv.com/iOS_6_Auto_Layout_NSLayoutConstraint_界面布局-weblog-227936-13173.html

    终于ios 6推出了正式版本,同时也随之iphone5的面试,对于ios开发者来说,也许会感觉到一些苦恼。那就是原本开发的程序,需要大量的修改了。为了适应最新的iphone5的屏幕。

    在WWDC2012里苹果推出了,Auto Layout的概念。我们可以通过Auto Layout来适应屏幕的改变。

    比如我们要做一个如下的界面。

    如果按照以前的frame的方式的话,大概代码如下

    [代码]c#/cpp/oc代码:

    01 UIView *myview = [[UIView alloc] init];
    02 myview.backgroundColor = [UIColor greenColor];
    03 UIView *redView = [[UIView alloc] init];
    04 redView.backgroundColor = [UIColor redColor];
    05 UIView *blueView = [[UIView alloc] init];
    06 blueView.backgroundColor = [UIColor blueColor];
    07 [myview addSubview:redView];
    08 [myview addSubview:blueView];
    09 redView.frame = CGRectMake(50, 80, 100, 30);
    10 blueView.frame = CGRectMake(180, 80, 100, 30);
    11 self.view = myview;

    通过上面的代码我们就能很简单的实现上面的布局效果了,但是使用auto layout的时候我们需要使用如下代码来实现。

    [代码]c#/cpp/oc代码:

    01 UIView *myview = [[UIView alloc] init];
    02  
    03 myview.backgroundColor = [UIColor greenColor];
    04  
    05 UIView *redView = [[UIView alloc] init];
    06  
    07 redView.backgroundColor = [UIColor redColor];
    08  
    09 UIView *blueView = [[UIView alloc] init];
    10  
    11 blueView.backgroundColor = [UIColor blueColor];
    12  
    13 [myview addSubview:redView];
    14  
    15 [myview addSubview:blueView];
    16  
    17 [myview setTranslatesAutoresizingMaskIntoConstraints:NO];
    18  
    19 [redView setTranslatesAutoresizingMaskIntoConstraints:NO];
    20  
    21 [blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
    22  
    23 NSMutableArray *tmpConstraints = [NSMutableArray array];
    24  
    25 [tmpConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|-50-[redView(==100)]-30-[blueView(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(redView,blueView)]];
    26  
    27 [tmpConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[redView(==30)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(redView)]];
    28  
    29 [tmpConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[blueView(==redView)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(blueView,redView)]];
    30  
    31 [myview addConstraints:tmpConstraints];
    32  
    33 self.view = myview;

    最后对于向下兼容的时候我们可以通过

    [代码]c#/cpp/oc代码:

    1 if([myview respondsToSelector:@selector(addConstraints:)]){
    2  
    3 //支持auto layout
    4  
    5 }else{
    6  
    7 //不支持
    8  
    9 }
  • 相关阅读:
    跨域导致FormsAuthentication.Decrypt报错:填充无效,无法被移除
    Php构造函数construct的前下划线是双的_
    DNN学习资源整理
    改进housemenu2使网站导航亲Seo并在新窗口中打开。
    推荐10款非常优秀的 HTML5 开发工具
    Ext.Net系列:安装与使用
    Devexpress 破解方法
    Microsoft Visual Studio 2010 遇到了异常,可能是由某个扩展导致的
    浮躁和互联网
    chrome 默认以 https打开网站
  • 原文地址:https://www.cnblogs.com/pinping/p/2720892.html
Copyright © 2011-2022 走看看