=====和xib绑定的View
-(instancetype)initWithFrame:(CGRect)frame{
if(self==[superinitWithFrame:frame]){
self= [[[NSBundlemainBundle] loadNibNamed:@"LYHomeGuanggaoTJVC"owner:selfoptions:nil]lastObject];
self.frame=frame;
}
return self;
}
- (void)awakeFromNib
{
[superawakeFromNib];
[selfinitView];
}
//设置文字的位置
- (void)contentSizeToFits
{
//先判断一下有没有文字(没文字就没必要设置居中了)
if([self.activityContenttv.textlength]>0)
{
//textView的contentSize属性
CGSize contentSize = self.activityContenttv.contentSize;
//textView的内边距属性
UIEdgeInsets offset;
CGSize newSize = contentSize;
//如果文字内容高度没有超过textView的高度
if(contentSize.height <=self.activityContenttv.frame.size.height)
{
//textView的高度减去文字高度除以2就是Y方向的偏移量,也就是textView的上内边距
CGFloat offsetY = (self.activityContenttv.frame.size.height - contentSize.height)/2;
offset = UIEdgeInsetsMake(offsetY,0, 0, 0);
}
else //如果文字高度超出textView的高度
{
newSize = self.activityContenttv.frame.size;
offset = UIEdgeInsetsZero;
CGFloat fontSize = 18;
//通过一个while循环,设置textView的文字大小,使内容不超过整个textView的高度(这个根据需要可以自己设置)
while (contentSize.height >self.activityContenttv.frame.size.height)
{
[self.activityContenttvsetFont:[UIFontfontWithName:@"Helvetica Neue"size:fontSize--]];
contentSize = self.activityContenttv.contentSize;
}
newSize = contentSize;
}
//根据前面计算设置textView的ContentSize和Y方向偏移量
[self.activityContenttvsetContentSize:newSize];
[self.activityContenttvsetContentInset:offset];
}
}
-(void)initView{
}
==========调用:
LYHomeGuanggaoTJVC *guanggao;
guanggao= [[LYHomeGuanggaoTJVC alloc]initWithFrame:CGRectMake(0,0, 320, HEIGHT)];
initWithCoder、awakeFromNib、initWithFrame
方法:
- 使用从Xib中加载
UIView
,会调用initWithCoder
- 从沙盒中解档自定义对象,需要重写
initWithCoder
- 用代码创建
UIView
,会调用initWithFrame
- 区别:
initWithCoder
在开始解析一个文件时调用,不管时Xib还是归档文件,awakeFromNib
在xib加载完毕时调用