clipsToBounds causes UIImage to not display in iOS10 & XCode 8

后端 未结 10 1739
南方客
南方客 2020-12-08 10:28

I switched my project over to new beta versions of iOS 10 and XCode 8. In all three areas of my app where I use:

imageView.layer.cornerRadius = imageView.fra         


        
10条回答
  •  长情又很酷
    2020-12-08 11:00

    I just implemented corner rounding like this

    @implementation RoundImageView
    
    - (instancetype)initWithCoder:(NSCoder *)coder
    {
        self = [super initWithCoder:coder];
        if (self) {
            self.layer.masksToBounds = YES;
            self.layer.cornerRadius = MIN(self.bounds.size.height, self.bounds.size.width)/2;
            [self addObserver:self
                   forKeyPath:@"bounds"
                      options:NSKeyValueObservingOptionNew
                      context:(__bridge void * _Nullable)(self)];
        }
        return self;
    }
    
    -(void)dealloc
    {
        [self removeObserver:self
                  forKeyPath:@"bounds"
                     context:(__bridge void * _Nullable)(self)];
    }
    
    -(void)observeValueForKeyPath:(NSString *)keyPath
                         ofObject:(id)object
                           change:(NSDictionary *)change
                          context:(void *)context
    {
        if(context == (__bridge void * _Nullable)(self) && object == self && [keyPath isEqualToString:@"bounds"])
        {
            self.layer.cornerRadius = MIN(self.bounds.size.height, self.bounds.size.width)/2;
        }
    }
    
    @end
    

    so I always have properly rounded corners. And I hadn't issues on upgrading to iOS10 and XCode8

提交回复
热议问题