1. ホーム
  2. iphone

UITextViewでテキストを垂直にセンタリングする

2023-12-31 08:48:50

質問

テキストを中央揃えにしたい 縦に の中に、大きな UITextView の中に、画面全体を埋め尽くすように配置します。そうすれば、わずかなテキスト、たとえば2、3語のテキストがあるとき、高さによって中央に配置されます。 これは、テキストを中央に配置することについての問題ではなく(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};
}