原理:由於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的高度之間的差值,設置內邊距,就相當於把內容居中了。