UIView的 autoresizingMask 自动停靠模式
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self UIViewAboutAutoResizingMask];
// [self createTimer];
[self createSlider];
}
- (void)UIViewAboutAutoResizingMask{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(20, 40, 200, 200)];
v.backgroundColor = [UIColor redColor];
[self.view addSubview:v];
v.tag = 11;
UIView *subV = [[UIView alloc] initWithFrame:CGRectMake(20, 40, 100, 100)];
subV.backgroundColor = [UIColor blueColor];
[v addSubview:subV];
//autoresizingMask自动停靠模式
//当父视图的大小发生变化时,子视图是如何变化的。
#warning UIViewAutoresizing是一个枚举类型,默认是UIViewAutoresizingNone,也就是不做任何处理。该属性用于自动调节子控件在父控件中的位置和宽高。
subV.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
/*
UIViewAutoresizingNone = 0,
//
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
*/
/*
UIViewAutoresizingNone 不自动调整。
UIViewAutoresizingFlexibleLeftMargin 自动调整view与父视图左边距,以保证右边距不变
UIViewAutoresizingFlexibleWidth 自动调整view的宽度,保证左边距和右边距不变
UIViewAutoresizingFlexibleRightMargin 自动调整view与父视图右边距,以保证左边距不变
UIViewAutoresizingFlexibleTopMargin 自动调整view与父视图上边距,以保证下边距不变
UIViewAutoresizingFlexibleHeight 自动调整view的高度,以保证上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin 自动调整view与父视图下边距,以保证上边距不变
*/
/*
总结:
1、几何属性:frame、center、bounds
2、层级关系 修改层级关系
3、UIView的动画 非block 与 block
4、自动停靠模式 AutoResizingMask
UIAlertView
UISlider
*/
}
#pragma mark - 滑块 slider
- (void)createSlider{
#warning UISlider 滑块
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(40, 250, 200, 80)];
[self.view addSubview:slider];
slider.minimumValue = 100;
slider.maximumValue = 200;
[slider addTarget:self action:@selector(updateViewBounds:) forControlEvents:UIControlEventValueChanged ];
}
#pragma mark - 定时器 -- 废弃
- (void)createTimer{
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateViewBounds) userInfo:nil repeats:YES];
}
- (void)updateViewBounds:(UISlider*)slider{
UIView *v = (id)[self.view viewWithTag:11];
CGFloat ret = slider.value;
CGRect bounds = v.bounds;
bounds.size.width = ret;
v.bounds = bounds;
}
在View上加载一个自定义控件,如下图所示
image.png
转屏后的效果,如下图所示
image.png
想要让自定义控件在转屏后,同样居中对齐,只需设置该自定义UIView与父视图的左边距和右边距的比例不变,上边距和下边距的比例不变。
在自定义控件中添加以下代码:
self.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
最终运行效果如下图所示
image.png
网友评论