在UITextView中垂直居中放置文本

谢尔盖·格里斯基霍夫(Sergey Grischyov)

我想将文本垂直居中放置在UITextView可填充整个屏幕的大文本内部-这样,当文本很少时,说几个单词,它就以高度为中心。这不是关于文本居中(在IB中可以找到的属性)的问题,而是关于如果文本较短则将文本垂直居中放置的问题,因此能做到吗?提前致谢!UITextView UITextView

索拉纳姆

首先,为视图加载时的contentSize键值添加观察者UITextView

- (void) viewDidLoad {
     [textField addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
     [super viewDidLoad];
}

然后添加此方法以在contentOffset每次contentSize值更改进行调整

-(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};
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章