UITextView垂直居中对齐文本

UITextView垂直居中对齐文本

本文介绍了UITextView垂直居中对齐文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 UItextView 中垂直居中对齐文字。

I want to align text vertically center in UItextView.

我正在使用以下代码

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}

;

不知怎的,这在iOS 5中不起作用,因为返回的contentSize与我在iOS6中得到的不同。

Somehow this doesn't work in iOS 5 as the contentSize returned there is different what I get in iOS6.

任何想法为什么 contentSize 相同的textView在iOS 5和iOS 6中有所不同?

Any Idea why contentSize of the same textView is different in iOS 5 and iOS 6?

推荐答案

在加载视图时为UITextView的contentSize键值添加一个观察者: -

Add an observer for the contentSize key value of the UITextView when the view loaded :-

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

每次contentSize值更改时调整contentOffset: -

Adjust the contentOffset every time the contentSize value change :-

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

希望它可以帮助你...

Hope it helps you...

您可以参考

这篇关于UITextView垂直居中对齐文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 00:41