iOS 之Autolayout(VFL)(一)

原创 2015年11月20日 11:34:12
iOS 之Autolayout(VFL)(一)
 VFL的子视图居中,网上搜了很多都没找到有用代码,自己研究出来了。代码如下
  1. UIActivityIndicatorView* prgrssView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];  
  2. prgrssView.translatesAutoresizingMaskIntoConstraints = NO;  
  3. [self.view addSubview:prgrssView];  
  4. [prgrssView release];  
  5. NSDictionary* views = NSDictionaryOfVariableBindings(prgrssView);  
  6. [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[prgrssView]-|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:views]];
 上面的代码可以让prgrssView 水平居中。垂直代码如下
  1. [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[prgrssView]-|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]];   
以上代码测试下来只对UIActivityIndicatorView有效,如果一个view有宽度和高度则上面的居中代码会报错。可以通过另一种方式来处理,具体代码如下
  1. //beging  
  2. UIImageView* imagevew = [UIImageView autolayoutView];  
  3. [imagevew setContentMode:UIViewContentModeScaleToFill];  
  4. [imagevew setImage:_tabCellImage];  
  5. [imagevew setTag:AEC_TAG_IMAGE_VIEW];  
  6. [self.view addSubview:imagevew];  
  7. [imagevew release];  
  8.   
  9. NSDictionary* views = NSDictionaryOfVariableBindings(imagevew);  
  10. //设置高度  
  11. [self.view.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[imagevew(60)]" options:0 metrics:nil views:views]];  
  12. //设置宽度  
  13. [self.view.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[imagevew(60)]" options:0 metrics:nil views:views]];  
  14. //垂直居中  
  15. [self.view addConstraint:[NSLayoutConstraint constraintWithItem:imagevew attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];  
  16. //水平居中  
  17. [self.view addConstraint:[NSLayoutConstraint constraintWithItem:imagevew attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];  
  18. //end   
 
这样就设置了一个imageview其大小为60*60 在整个视图中居中。

相关文章推荐

ios8 vfl以及AutoLayout

  • 2014年11月10日 00:47
  • 50KB
  • 下载

iOS的屏幕适配之Autoresizing、Autolayout、VFL、Masonry

屏幕适配 iPhone4S之前没有屏幕适配,因为屏幕尺寸不变,全部用frame、bounds、center进行布局。 iphone5之后才开始有屏幕适配。 Autoresizing...

iOS--VFL--autolayout--自动布局

使用Auto Layout中的VFL(Visual format language)--代码实现自动布局 本文将通过简单的UI来说明如何用VFL来实现自动布局。在自动布局的时候避免不了使用代码来加以...
  • kiwirr
  • kiwirr
  • 2016年06月17日 15:54
  • 233

IOS autoLayout之使用VFL语言进行代码自动布局

VFL的简单语法: H:[cancelButton(72)]-12-[acceptButton(50)] canelButton宽72,acceptButton宽50,它们之间间距12 H:[wide...

iOS 一篇厚道的Autolayout及VFL经验分享

Cocoa autolayout出来蛮久了。以前多次想去深入研究一下,每次都很蛋疼无序。这东西是在有些搞。尤其习惯了code写布局的。看到Visual format language,简直要掀桌子。搜...
  • jichunw
  • jichunw
  • 2015年03月10日 13:49
  • 347

ios开发autolayout之VFL语言使用总结

ios开发autolayout之 VFL language 1.about VFL language 示例: H:[cancelButton(72)]-12-[acceptButton(50)]...

iOS海哥开发笔记 (海哥原创,iOS 之Autolayout(VFL)(二))

  • horisea
  • horisea
  • 2016年02月23日 12:45
  • 245

iOS界面布局之三——纯代码的autoLayout及布局动画 iOS8及VFL语言

http://my.oschina.net/u/2340880/blog/524089 目录[-] iOS界面布局之三——纯代码的autoLayout及布局动画 一、引言 二、了解一个类 ...
  • jeffasd
  • jeffasd
  • 2015年12月29日 18:05
  • 587

AutoLayout VFL 笔记

visual format language (VFL)直接来个例子实在: UILabel *hint = [[UILabel alloc] init]; hint.text = @"l...

一篇厚道的Autolayout及VFL经验分享

这篇不是什么教程。 Cocoa autolayout出来蛮久了。以前多次想去深入研究一下,每次都很蛋疼无序。这东西是在有些搞。尤其习惯了code写布局的。看到Visual format langua...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 之Autolayout(VFL)(一)
举报原因:
原因补充:

(最多只允许输入30个字)