笔记:UITextView内容垂直居中方法
程序员文章站
2022-11-27 14:34:35
原理:由于textView是继承自UIScrollview,所以会有ContentSize属性。所以可以通过文字内容的高度(也就是ContentSize)的高度和textView的高度之间的差值,设置内边距,就相当于把内容居中了。 ......
- (void)contentsizetofit { //先判断一下有没有文字(没文字就没必要设置居中了) if([self.textview.text length]>0) { //textview的contentsize属性 cgsize contentsize = self.textview.contentsize; //textview的内边距属性 uiedgeinsets offset; cgsize newsize = contentsize; //如果文字内容高度没有超过textview的高度 if(contentsize.height <= self.textview.frame.size.height) { //textview的高度减去文字高度除以2就是y方向的偏移量,也就是textview的上内边距 cgfloat offsety = (self.textview.frame.size.height - contentsize.height)/2; offset = uiedgeinsetsmake(offsety, 0, 0, 0); } else //如果文字高度超出textview的高度 { newsize = self.textview.frame.size; offset = uiedgeinsetszero; cgfloat fontsize = 18; //通过一个while循环,设置textview的文字大小,使内容不超过整个textview的高度(这个根据需要可以自己设置) while (contentsize.height > self.textview.frame.size.height) { [self.textview setfont:[uifont fontwithname:@"helvetica neue" size:fontsize--]]; contentsize = self.textview.contentsize; } newsize = contentsize; } //根据前面计算设置textview的contentsize和y方向偏移量 [self.textview setcontentsize:newsize]; [self.textview setcontentinset:offset]; } }
原理:由于textview是继承自uiscrollview,所以会有contentsize属性。所以可以通过文字内容的高度(也就是contentsize)的高度和textview的高度之间的差值,设置内边距,就相当于把内容居中了。