画面回転をしたあとに、UITextViewの先頭を表示する
公開日:
:
最終更新日:2019/09/17
Tips UITextView, Xcode
回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)にすると、TextViewが縮んでしまうレイアウトになっているとき、表示される部分がテキストの中央部になっているっぽい挙動をして、それはちょっと困るなぁということで、setContentOffsetで先頭を表示させようとしたんですが、はたしていったい何のメソッドで検知すればいいのか・・・ということで途方にくれてました。
結論だけ書くと、viewWillTransitionをoverrideして、coordinator.animateをその中で実行し、completionブロックに必要な処理を書くことで解決しました。以下のようなコードになります。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) coordinator.animate(alongsideTransition: nil) { _ in self.textView.setContentOffset(.zero, animated: false) } }
参考サイト
iOS: How to run a function after Device has Rotated (Swift) – Stack Overflow
関連記事
-
CoreDataのソートとsectionNameKeyPathの関係
CoreDataをフェッチするときに、indexPathのsectionにできるsectionNam
-
UIButtonのappearanceで派生する色設定
以下のコードでUIButtonのappearanceでBackgroundColorの設定をすると、
-
iOS7でのPopover内サイズの指定
UIPopover内で表示する場合のViewControllerのコンテンツサイズ設定に関してのメモ
-
Xcode8で余計なログを抑制する
Xcode8に更新してから、妙にログが増えたので、NSLogで明示したのと実行時エラー以外のログを吐
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
HTMLParserを修正する
HTMLスクレイピングしてる時に役立つライブラリであるObjective-C-HMTL-Parser
-
UILabelの改行をInterfaceBuilderから入力する
UILabelの行数は任意に設定できて、「0」を指定すると行数を限定しないで(UILabelのbou
-
AdMob組み込み覚書
書籍ではコレがかなり参考になるのでご紹介。 表題の通りで、組み込みで要注意っぽい部分だけを