美文网首页
关于autoresizesSubviews

关于autoresizesSubviews

作者: 楼上那只猫 | 来源:发表于2017-10-12 22:33 被阅读50次

话不多说,先贴代码

- (IBAction)showView:(id)sender {
    UIView * v = [[UIView alloc] initWithFrame:self.view.bounds];
    UITapGestureRecognizer * tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss:)];
    [v addGestureRecognizer:tapGes];
    v.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
    
    [[UIApplication sharedApplication].keyWindow addSubview:v];
    self.bgView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 120, 300, 0)];

    //设置autoresizesSubviews为 NO,避免 bgView 改变 bounds 时,对子视图进行重新布局
    self.bgView.autoresizesSubviews = NO;

    _bgView.backgroundColor = [UIColor redColor];
    for (int i = 0; i < 2; i++) {
        MyView * v = (MyView *)[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil] lastObject];
        v.frame = CGRectMake(0, i * 30, 200, 40);
        v.backgroundColor = [UIColor greenColor];
        [_bgView addSubview:v];
    }
    [v addSubview:_bgView];
    [UIView animateWithDuration:2 animations:^{
        _bgView.frame = CGRectMake(20, 120, 300, 150);
    } completion:^(BOOL finished) {
        NSLog(@"%@", _bgView.subviews);
    }];
}

这段代码主要实现的功能是点击一个按钮,弹出一个全屏的遮罩,遮罩上有一个 Scrollview(在这里是 bgView),scrollview 里有几个子视图,在遮罩出现的时候, scrollview 要有一个高度从0变到某个值的动画.

在未写下面这句代码的时候,一直达不到效果

self.bgView.autoresizesSubviews = NO;

效果如下:

效果1.png

可以看出,子 view 的尺寸并不是代码设置的那样,那是因为他们的父 view, 也就是 bgView 的属性autoresizesSubviews默认为 YES.
该属性说明如下:

A Boolean value that determines whether the receiver automatically resizes its subviews when its bounds change.
When set to YES, the receiver adjusts the size of its subviews when its bounds change. The default value is YES

当为 YES 的时候,会在 frame 变化时调整子视图,造成未知的变化.

因此为了避免这种效果,应该设置该属性为 NO

最终想要的效果

最终效果.png

相关文章

  • 关于autoresizesSubviews

    话不多说,先贴代码 这段代码主要实现的功能是点击一个按钮,弹出一个全屏的遮罩,遮罩上有一个 Scrollview(...

  • UIView 属性解析大全(呕心沥血)

    autoresizingMask autoresizesSubviews sizeThatFits sizeToF...

  • iOS-UIView的自动尺寸调整属性autoresizesSu

    自动尺寸调整属性autoresizesSubviews //高度自动伸缩,右边间距自动伸缩 self.autore...

  • autoresizesSubviews导致frame不对

    @property(nonatomic) BOOL autoresizesSubvie...

  • 关于关于关于

    他们爱他们自己,不爱你 他们爱你是他们的母亲妻子女儿姐妹 他们不爱你 直到你死的时候,爱才产生,与遗忘同时 那也不...

  • 光明人生

    关于出生 关于成长 关于求学 关于青春期 关于恋爱 关于择业 关于婚姻 关于养生 关于家庭 关于人际 关于教子 关...

  • 「梦雅的简动力」打卡计时65天

    * 关于人生 * 关于梦想 * 关于方向 * 关于创业 * 关于投资 * 关于成败 * 关于个性 * 关于高度 *...

  • 关于

    关于两个人? 关于100步? 关于回头? 关于深情? 关于家庭? 关于孩子? 关于成长? 关于伤痛? 关于怀抱? ...

  • 2017新手妈妈年终总结

    关于购物 关于体重 关于减肥 关于纪念日 关于生活态度 关于上班 关于职场晋升加薪 关于睡眠 关于抱孩子 关于发型...

  • 2018-11-28

    关于流浪、关于随心、关于自由、关于世俗、关于规则、关于坦诚、关于真我、关于好奇心、关于对这整个世界的态度、关于整个...

网友评论

      本文标题:关于autoresizesSubviews

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