1、首先创建MyAlertView继承于UIView
会生成.m和.h文件
2、新建XIB文件
新建->User Interface->View
会生成XIB文件
3、在XIB文件上拖控件设置界面
4、和XIB关联
选中XIB文件,设置Class关联为创建的文件
设置Size
5、加载XIB文件到界面显示
方法一:
在使用View的地方导入头文件来使用。
MyAlertView * alert = [[[NSBundle mainBundle] loadNibNamed:@"MyAlertView" owner:self options:nil] lastObject];
[self.view addSubview:alert];
这样的话不能设置Frame。。。好尴尬。。。
方法二:重写初始化方法来设置Frame
在MyAlertView.m重写初始化方法。
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle] loadNibNamed:@"MyAlertView" owner:self options:nil] lastObject];
}
return self ; }
在使用View的地方导入头文件来使用。
MyAlertView * alert = [[MyAlertView alloc] initWithFrame:CGRectMake(50, 50, SCREENWIDTH - 100, 100)];
[self.view addSubview:alert];
但是。。。出问题了。。。
问题:在使用View的地方初始化的时候设置了Frame,但是Frame还是没有改变。。。在MyAlertView.m初始化方法里面打印Frame,Frame是自己初始化的时候设置的。。。
是什么原因导致的呢?
我也不知道。。。
但是解决办法还是有的:
重写
-(void)drawRect:(CGRect)rect
{
//在这里面重新设置一下self.frame
}
网友评论