修改xib自定义cell的frame,自定义view同样适用。

文章写的比较简洁所以可能一眼看不懂什么意思,这里我解释一下,通常我们用纯代码来自定义view或者cell的时候,初始化都是在自定义view的下面

- (instancetype)initWithFrame:(CGRect)frame;

这个方法里面初始化,然后再控制器里面初始化

SomeView *cusView =[SomeView alloc]initWithFrame:CGRect(x,y,w,h)];

修改frame的话也可以直接修改,但是当我们用xib自定义view的时候如果你想修改里面某个view的frame的时候就不能直接通过代码修改了,通过下面的方法可以实现代码修改xib的frame,原理就是通过drawRact方法重绘界面。


不用取消autolayout 不用拉约束修改Contraints,方便快捷。

.gif

直接上代码。

.m
@interface CommunityTopCell (){
    CGRect myframe;  
}

.m
- (id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        NSArray * nibs = [[NSBundle mainBundle]loadNibNamed:NSStringFromClass([CommunityTopCell class]) owner:nil options:nil];
        self = nibs[0];
        myframe = frame;
    }
    return self;
}
- (void)drawRect:(CGRect)rect{
    self.frame = myframe; //关键
}

(打扰了)

你可能感兴趣的:(修改xib自定义cell的frame,自定义view同样适用。)