美文网首页
3.4UIView的 autoresizingMask 自动停靠

3.4UIView的 autoresizingMask 自动停靠

作者: 草根小强 | 来源:发表于2019-04-09 14:02 被阅读0次

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

相关文章

网友评论

      本文标题:3.4UIView的 autoresizingMask 自动停靠

      本文链接:https://www.haomeiwen.com/subject/wuybiqtx.html