Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二)

在上一篇文章iOS学习笔记02——以编码的方式实现Auto Layout自动布局(一)中我们简单的介绍了使用Visual Format Language创建布局约束来实现自动布局,这种方法创建的布局约束能够满足大部分的布局的需求。但是想要实现类似于这样的约束:button.width = 2 * button.height就不能满足要求了,这一篇我们我们简单介绍一下如何创建这样的布局约束。

Apple就是非常贴心,它为我们提供了另外一个方法创建类似于view1.attr1 = view2.attr2 * multiplier + constant这样的约束,方法如下:

[cpp] view plaincopy

  1. +(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

下面我们用这种方法创建一个布局约束,实现一个按钮button的布局,button距离父视图的左侧60点,距离顶部30点,其中宽度W = 2 * H + 10。效果图如下


不多说,上代码

[cpp] view plaincopy

    1. - (void)viewDidLoad
    2. {
    3. [super viewDidLoad];
    4. // Do any additional setup after loading the view.
    5. self.edgesForExtendedLayout = UIRectEdgeNone;
    6. UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
    7. button.layer.borderColor = [UIColor blackColor].CGColor;
    8. button.layer.borderWidth = 2.0;
    9. [button setTitle:@"W=2*H" forState:UIControlStateNormal];
    10. [self.view addSubview:button];
    11. [button setTranslatesAutoresizingMaskIntoConstraints:NO];
    12. NSMutableArray * tempConstraints = [NSMutableArray array];
    13. [tempConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-60-[button]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
    14. [tempConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[button(==30)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
    15. [self.view addConstraints:tempConstraints];
    16. [self.view addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeHeight multiplier:2.0 constant:10.0]];
    17. }
    18. http://blog.csdn.net/dongbaojun_ios/article/details/12624393

Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二),布布扣,bubuko.com

时间: 2024-08-01 10:46:30

Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二)的相关文章

Eclipse中设置编码的方式

Eclipse中设置编码的方式 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP.Windows 2000简体中文)的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030,工程中建立的java文件也是GB18030.如果要使 新建立工程.java文件直接使UTF-8则需要做以下工作: 1.

Base64的编码转换方式

下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集.然后,其他所有符号都转换成这个字符集中的字符. 具体来说,转换方式可以分为四步. 第一步,将每三个字节作为一组,一共是24个二进制位. 第二步,将这24个二进制位分为四组,每个组有6个二进制位. 第三步,在每组前面加两个00

通过 Masonry使用纯代码方式编写 Auto Layout--配置 Masonry

Auto Layout 很 awesome 对不对,但是apple 默认的用代码写 Auto Layout 的方式实在是太鸡肋了-噩梦一样! 但是作为一个手(也)码(爱)爱(装)好(X)者,用 StoryBoard 显然不是咱的菜! 对了,忘了说一句, SizeClass 很酷,并且是用 IB 来弄的,但是先不用担心,我们至少要适配 iOS7,也就是说, Size Class 到很流行还有一段时间,到时候肯定有大神(或者是你)找出 Size Class 的代码解决方案的 ! 言归正传,我们回到代

如何设置EditPlus的默认编码utf-8方式

最近在使用英文版的Editplus写代码的时候,发现中文字符在调试过程中都变成了乱码,发现是Editplus编码设置的问题,Editplus默认编码可能是ANSI,需要将其改成UTF-8.干脆给设置默认新建文档就是UTF-8格式吧 1. 中文版设置方法:点击“工具” 2. 选择“配置用户工具” 3. 在打开的窗口中,选择“文件” 4. 选择默认编码的编码方式,如图选择的“utf-8”,然后点击确认,退出软件,再打开新建默认即为utf-8格式了 5. 英文版EditPlus设置方法: 首先,在To

【译】 13简单的优秀编码规则(从我15年的经验)

嗨,我的工作作为一个程序员超过15年,并使用许多不同的语言,范例,框架和其他狗屎.我想和大家分享我写好代码的规则. 优化VS可读性 去他妈的优化 始终编??写易于阅读且对开发人员可理解的代码.因为在硬可读代码上花费的时间和资源将远远高于从优化中获得的. 如果你需要进行优化,那么使它像DI的独立模块,具有100%的测试覆盖率,并且不会被触及至少一年. 架构第一 我看到很多人说"我们需要快速做事,我们没有时间做架构".其中约99%的人因为这样的想法而遇到了大问题. 编写代码而不考虑其架构是

Android 给layout设置动画的两种方式

public class MainActivity extends Activity { LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (LinearLayout) findViewById(R.id.layout); lay

转:Eclipse中设置编码的方式

来源:http://blog.csdn.net/jianw2007/article/details/3930915 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP.Windows 2000简体中文)的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030,工程中建立的java文件也是GB1

windown 下最简单的按章mysql方式

最近自己的mysql要升级,需要重新安装mysql,官网有提供傻瓜式的安装方式.. 记得下载.msi的格式.这个安装最简单. 原文地址:https://www.cnblogs.com/jinjian91/p/10424987.html

识别各种不同的网页编码/加密方式【不定期更新】

2019/9/28 由于平时遇到的编码比较多且杂 记性实在太差 决定起草记录之 一,基础知识 1.ASCII码 美国标准信息交换码:ASCII   ( American Standard Code for Information Interchange ) A在ascii中定义为01000001,也就是十进制65,有了这个标准后,当我们输入A时,计算机就可以通过ascii码知道输入的字符的二进制编码是01000001. ASCII是使用指定的7 位或8 位二进制数组合来表示128 或256 种可