文章写的比较简洁所以可能一眼看不懂什么意思,这里我解释一下,通常我们用纯代码来自定义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; //关键
}
(打扰了)
网友评论