在UITextView中垂直居中文本 [英] Center text vertically in a UITextView
问题描述
我希望将文本垂直置于一个填满整个屏幕的大 UITextView
中 - 这样当文字很少时,请说几个字,它以身高为中心。
这不是关于文本居中(可以在IB中找到的属性)的问题,而是关于将文本垂直放在 UITextView $中间的问题c $ c> 如果文本很短,那么
UITextView
中没有空白区域。
可以这样做吗?提前致谢!
I want to center the text vertically inside a big UITextView
that fills the whole screen - so that when there's little of text, say a couple of words, it is centered by height.
It's not a question about centering the text (a property that can be found in IB) but about putting the text vertically right in the middle of UITextView
if the text is short, so there are no blank areas in the UITextView
.
Can this be done? Thanks in advance!
推荐答案
首先为 contentSize
键添加一个观察者加载视图时 UITextView
的值:
First add an observer for the contentSize
key value of the UITextView
when the view is loaded:
- (void) viewDidLoad {
[textField addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
[super viewDidLoad];
}
然后添加此方法以调整 contentOffset
每次 contentSize
值更改时:
Then add this method to adjust the contentOffset
every time the contentSize
value changes:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
UITextView *tv = object;
CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height * [tv zoomScale])/2.0;
topCorrect = ( topCorrect < 0.0 ? 0.0 : topCorrect );
tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}
这篇关于在UITextView中垂直居中文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!