您的位置:时时app平台注册网站 > 编程知识 > 活动布局之autoresizingMask使用详解(Storyboard&Code)

活动布局之autoresizingMask使用详解(Storyboard&Code)

2019-09-14 00:42

那个属性是足以组合使用的,比如:

也正是枚举中的值能够利用|隔断,相同的时候具有四个值的成效,能够本着差异的现象作区别的改动。比方:

任何的咬合类似,作者那边就不一一列举了。

UIViewAutoresizing是八个枚举类型,暗许类型是UIViewAutoresizingNone,即不做活动布局。

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight

1)顶上部分相差父视图距离不改变

iOS有八个自动布局方式:

注意:
view的autoresizesSubviews属性为yes时(默认为yes),autoresizing才会立见成效。

野趣是:view的宽度根据父视图的宽度比例实行缩放,距离父视图顶端距离不改变。

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin

autoresizing组合使用:

UIViewAutoresizingFlexibleLeftMargin

  1. autoresizing
  2. autolayout,那一个布局情势是iOS6后头新添的
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
//不会随父视图的改变而改变
    UIViewAutoresizingNone                 = 0,
//自动调整view与父视图左边距,以保证右边距不变
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
//自动调整view的宽度,保证左边距和右边距不变
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
//自动调整view与父视图右边距,以保证左边距不变
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
//自动调整view与父视图上边距,以保证下边距不变
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
//自动调整view的高度,以保证上边距和下边距不变
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
//自动调整view与父视图的下边距,以保证上边距不变
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5

它将会来得:

autoresizingMask是UIView的习性,使用起来相比轻便。要是您的利用的分界面比较简单,就能够利用autoresizing实行活动布局。

情趣是:view的上涨的幅度依据父视图的上涨的幅度比例进行缩放,保障左侧距和侧面距不改变;view的拉长率依据父视图的可观比例进行缩放,有限帮助下面距和底下距不改变。

时时app平台注册网站 1

迎接出席【iOS/Swift/OC开拓交流群|127183325】调换学习

iOS有两大机动布局利器:autoresizing 和 autolayout(autolayout是IOS6过后新增添)。autoresizing是UIView的性质,一直存在,使用也比较轻巧,但是从未autolayout那样庞大。倘若您的分界面临比轻易,须要的细节尚未那么高,那么你一丝一毫能够接纳autoresizing去开展活动布局。以下会针对autoresizing举行研究。

不会随父视图的改变而更动

属性值 含义
UIViewAutoresizingNone 不进行自动布局,不随父视图的改变而改变
UIViewAutoresizingFlexibleLeftMargin 自动调整与父视图左边距,保持右边距不变
UIViewAutoresizingFlexibleWidth 自动调整本身的宽度,保持和父视图的左右边距不变
UIViewAutoresizingFlexibleRightMargin 自动调整与父视图右边距,保持左边距不变
UIViewAutoresizingFlexibleTopMargin 自动调整与父视图上边距,保持下边距不变
UIViewAutoresizingFlexibleHeight 自动调整本身的高度,保持上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin 自动调整与父视图的下边距,保持上边距不变

UIViewAutoresizing是二个枚举类型,暗中认可是UIViewAutoresizingNone,也便是不做别的管理。

2)从XCODE6伊始,Storyboard&Xib暗中认可是机关布局,由此我们必要手动调节,技术使用autoresizing。

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5};

任何的整合类似,小编那边就不一一列举了。

时时app平台注册网站 2

用多少个表来实行表达那么些属性的情趣:

时时app平台注册网站 3

UIView的 autoresizesSubviews属性为YES时,上述本性本事奏效,默以为YES。

附一段代码能够运维看看效果:

//// ViewController.m// HPSwitchViewDemo//// Created by 韩学鹏 on 16/10/10.// Copyright © 2016年 韩学鹏. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (nonatomic, weak) UIView *myView;@end@implementation ViewController- viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //这个view作为一个父视图 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 300, 300)]; view.backgroundColor = [UIColor blueColor]; [self.view addSubview:view]; view.autoresizesSubviews = YES; self.myView = view; //子视图 UIView *view0 = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 150, 150)]; view0.backgroundColor = [UIColor greenColor]; view0.autoresizingMask = UIViewAutoresizingFlexibleWidth; [view addSubview:view0];}- touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ CGRect frame = self.myView.frame; frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height); self.myView.frame = frame;}- didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

就如今的代码来讲,当点击的时候父视图的肥瘦会减小,子视图会为了保全与父视图的左左侧距不改变,宽度会趁着父视图的变小而变小。

时时app平台注册网站 4

view的增进率随着父视图的变化举行活动调度,自动调解与父视图的上边距,与父视图的上边距保持不改变。

时时app平台注册网站 5

注意:

时时app平台注册网站 6

Demo:

机关调治view与父视图侧边距,以担保左侧距不改变

autoresizing组合使用:

2)宽度按父视图比例实行拉伸

#define topSpace 64#define kMargin 20#define kTopViewHeight 44#define kTopViewWidth 300#define kTextLabelWidth 200#define kTextLabelHeight 30

活动调度view的宽窄,保证侧边距和侧边距不改变

UIViewAutoresizingFlexibleHeight

对待以上七个使用方法,是不是认为选拔代码去进行autoresizing的决定,会相对于比较费心。

最终彰显:

未曾做适配在此以前的代码:

Demo下载:http://pan.baidu.com/s/1qWnxsZU 

注意:

各属性解释:

私下认可是是贴近左上方,在Autoresizing上得以观看:

一、使用代码(Code)调控autoresizingMask

小结:

自动调度view与父视图右侧距,以管教左侧距不改变

时时app平台注册网站 7

前言:当明儿早晨就不像以前那么唯有五个尺寸,今后最少的三星开采须要至少需求适配三个尺码。由此在此以前笔者们得以行使硬坐标去设定各样控件的岗位,不过今后的话已经不得以了,大家要求去做适配,可能你说能够使用两套UI或两套以上的UI,但那样不高速也不合乎规划。iOS有两大机关布局利器:autoresizing 和autolayout(autolayout是IOS6过后新扩张)。autoresizing是UIView的属性,一贯存在,使用也相比较轻易,可是从未autolayout这样强大。假若您的界面比较轻巧,需求的细节尚未那么高,那么你一丝一毫能够选拔autoresizing去开展自动布局。以下会针对autoresizing实行探究。

事实上要做到目的展现那样也是极其轻巧的,四个控件如下设置:

1)view的autoresizesSubviews属性为yes时(默以为yes),autoresizing才会收效。

上边是体系用到的宏:

UIViewAutoresizingFlexibleBottomMargin

Storyboard上只有多少个控件,View 和 Label。

UIViewAutoresizingFlexibleTopMargin

0、autoresizing使用前的分解:

也正是枚举中的值能够采纳|隔开分离,同期全体多少个值的效能,能够针对不一致的情景作差异的变化。举个例子:

增补:你能够先按任何的装置尺寸为界面上的控件初叶化,因为autoresizing是会以父视图的改观而更动。

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {    UIViewAutoresizingNone                 = 0,    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,    UIViewAutoresizingFlexibleWidth        = 1 << 1,    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,    UIViewAutoresizingFlexibleHeight       = 1 << 4,    UIViewAutoresizingFlexibleBottomMargin = 1 << 5

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin

// 以Iphone4(320, 480)为底蕴,设置各控件的地方// 注意:必得怀有控件都依照Iphone4(320, 480)为底蕴开端化三遍,不然按百分比缩放时会发生错误!UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(kMargin, topSpace, kTopViewWidth, kTopViewHeight)];CGFloat textLabelTop = (topView.frame.size.width - kTextLabelWidth) / 2;CGFloat textLabelWidth = (topView.frame.size.height - kTextLabelHeight) / 2;UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(textLabelTop, textLabelWidth, kTextLabelWidth, kTextLabelHeight)];// 设置文字及居中[textLabel setText:@"Garvey"];[textLabel setTextAlignment:NSTextAlignmentCenter];// 分别设置样式[topView setBackgroundColor:[UIColor redColor]];[textLabel setTextColor:[UIColor whiteColor]];// 加多视图[topView addSubview:textLabel];[self.view addSubview:topView];

电动调解view与父视图上面距,以担保下面距不改变

时时app平台注册网站 8

应用autoresizing进行分界面适配:

意思是:

2)宽度按父视图比例进行拉伸

// 以Iphone4(320, 480)为根基,设置各控件的地点// 注意:必须具有控件都遵照Iphone4(320, 480)为根基开端化一次,不然按百分比缩放时会发生错误!UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(kMargin, kTopSpace, kTopViewWidth, kTopViewHeight)];CGFloat textLabelTop = (topView.frame.size.width - kTextLabelWidth) / 2;CGFloat textLabelWidth = (topView.frame.size.height - kTextLabelHeight) / 2;UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(textLabelTop, textLabelWidth, kTextLabelWidth, kTextLabelHeight)];// 设置文字及居中[textLabel setText:@"Garvey"];[textLabel setTextAlignment:NSTextAlignmentCenter];// 分别安装样式[topView setBackgroundColor:[UIColor redColor]];[textLabel setTextColor:[UIColor whiteColor]];// 设置文字控件的大幅度依据上超级视图(topView)的百分比进行缩放[textLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];// 设置View控件的肥瘦依据父视图的比重举行缩放,距离父视图顶端、侧边距和右边手距的相距不改变[topView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];// 增添视图[topView addSubview:textLabel];[self.view addSubview:topView];// 注意:重置topView地点的代码,必需求写在抬高视图的前边,不然autoresizing的职责计算会出错!CGFloat topViewWidth = kUIScreen.size.width - kMargin * 2;[topView setFrame:CGRectMake(kMargin, kTopSpace, topViewWidth, kTopViewHeight)];

在此地说美赞臣(Karicare)下,如果是平常利用Storyboard/Xib设置autoresizing,那么调换使用代码设置autoresizing的话,轻易并发精通错误难题。比方说UIViewAutoresizingFlexibleTopMargin,可能会被误认为是顶上部分相差不改变,其实是底层距离不改变。那个消除办法也很简短,只须要把利用代码和利用Storyboard设置autoresizing,它们是倒转的,只供给如此去记就能够了。

最后展现:

二、在Storyboard控制autoresizingMask

原来的书文地址:http://www.cocoachina.com/ios/20141216/10652.html 

UIViewAutoresizingNone

3)view与父视图的左边手距和左手距不改变

UIViewAutoresizing是三个枚举类型,私下认可是UIViewAutoresizingNone,也正是不做任何管理。

UIViewAutoresizingFlexibleRightMargin

时时app平台注册网站 9

};

假若是使用Stroyboard/Xib的话就可以特别轻易,只要求点击多少个地点就能够了,看大家挑选哪一种方法。

1)顶上部分离开父视图距离不改变

3)view与父视图的左边手距和右边手距不改变

倘使我们不做其余的适配方案,它将会显得:

活动调治view与父视图的下面距,以确定保证上面距不改变

机动调治view的惊人,以保证下面距和下部距不改变

UIViewAutoresizingFlexibleWidth

切切实实际操作作如图(展开Storyboard文件,你就拜候到上边图的分界面):

下边会写二个简易的例子以给予你们越来越直观的精通,并会在本文最终附上德姆o下载地址,请继续往下观察噢。

本文由时时app平台注册网站发布于编程知识,转载请注明出处:活动布局之autoresizingMask使用详解(Storyboard&Code)

关键词: