成长小计-Swift重写frame的set方法

相信很多朋友做OC的时候都有修改cell的frame需求,

OC写法:

- (void)setFrame:(CGRect)frame
{
    frame.origin.y += 10;
    frame.size.height -= 10;
    
    [super setFrame:frame];
}

但是在Swift中就比较麻烦了,最初我写的时候运行一直报错

最初Swift写法:

    //重写frame
    override var frame:CGRect{
        didSet {
            
            frame.origin.x += 10/2
            frame.size.width -= 10
            frame.origin.y += 10
            frame.size.height -= 10
            super.frame = frame

        }
    }
陷在死循环中了:

成长小计-Swift重写frame的set方法_第1张图片

于是在网上扒啊扒,没有一个解释的,也没有一个重写frame的案例讲解,可能Swift资料还不够丰富,这时候就只能自己想原因,思路是对的,可能中间有些代码出现了问题,于是思考,在set方法中造成死循环无非就是自己一直在调自己,于是想到了一个解决办法

正确Swift写法:

//重写frame
    override var frame:CGRect{
        didSet {
            
            var newFrame = frame
            newFrame.origin.x += 10/2
            newFrame.size.width -= 10
            newFrame.origin.y += 10
            newFrame.size.height -= 10
            super.frame = newFrame
            

        }
    }





你可能感兴趣的:(iOS-进击之路)