文章寫的比較簡潔所以可能一眼看不懂什么意思,這里我解釋一下,通常我們用純代碼來自定義view或者cell的時(shí)候,初始化都是在自定義view的下面
- (instancetype)initWithFrame:(CGRect)frame;
這個(gè)方法里面初始化,然后再控制器里面初始化
SomeView *cusView =[SomeView alloc]initWithFrame:CGRect(x,y,w,h)];
修改frame的話也可以直接修改,但是當(dāng)我們用xib自定義view的時(shí)候如果你想修改里面某個(gè)view的frame的時(shí)候就不能直接通過代碼修改了,通過下面的方法可以實(shí)現(xiàn)代碼修改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; //關(guān)鍵
}
(打擾了)