たけぞうBLOG

iOS,XCode,Cameraなど

iOSアプリ開発 Swift Xcode6

[Swift]Autolayout+UIScrollView上に動的なUITextViewを表示する

投稿日:9月 8, 2015 更新日:

Autolayout+UIScrollView上に動的なUITextViewを表示しようと思ったのですが、なかなか一筋縄ではいかなかったので備忘録

やりたいこと

StoryboardでAutolayoutを有効にしながらUI設定をしつつ、UITextViewの中身は動的に変化する前提で、大量のテキストを表示する際にはスクロールするようにしたい。 \"tableView\" Storyboardではあくまで静的情報をもとに制約を定義するため、サーバーからテキストデータを取得してから、テキスト量に応じてScrollViewのContentSizeの高さを動的に設定するためには下記のような手順に従う必要があるみたいです。(もっと簡単な方法を知っている方がいたら教えて下さい。。)

手順

  1. StoryboardのmainビューにUIScrollViewを追加する
  2. UIScrollViewの中にUIViewを追加する
  3. 2で追加したUIViewにUITextViewを追加する
  4. UITextViewの\”Scroll Enabled\”を無効にする(チェックを外す)
  5. UIScrollViewに(leading,trailing,top,bottom)の4つのconstraintを定義する
  6. 2で追加したUIViewに(leading,trailing,top,bottom)の4つのconstraintを定義する
  7. 2で追加したUIViewに\”width equally\”の制約を定義する
  8. UITextViewに(leading,trailing,top,bottom,height)の5つのconstraintを定義する
  9. UITextViewのheight constraintのIBOutletをViewController.swiftに追加します。 @IBOutlet weak var textViewHeightConstraint: NSLayoutConstraint!
  10. UIITextViewのheight constraintをプログラムで変更します。 self.textViewHeightConstraint.constant = self.textView.sizeThatFits(CGSizeMake(textView.frame.size.width, CGFloat.max)).height

サンプルソース

https://github.com/takezou621/TextViewSample

参考

UITextView inside UIScrollView with AutoLayout link

-iOSアプリ開発, Swift, Xcode6

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

InterfaceBuilderを使わないWindowBasedプロジェクトテンプレート

普段のiPhoneアプリ開発ではInterfaceBuilderを使わないため、初期設定済みのXCodeのテンプレートを作成しました。
no image

iPhoneMultichannelMixerTestの起動時処理を整理

http://developer.apple.com/library/ios/#samplecode/iPhoneMultichannelMixerTest/Introduction/Intro.ht …

[XCode6]PaintCodeを使ってXCode6にカスタムUIViewを表示する

やること PaintCodeで作成したビューをXcode6のカスタムUIViewとして表示します。

XCode4のビルドパス

XCode3.xのときはデフォルトのビルドパスがプロジェクトディレクトリ内のbuildディレクトリだったのが、XCode4から/Library/Developer/Xcode/DerivedData/ …

iOS6以降のDisplay Portrait、Landscape指定

iOS6から画面回転の指定方法が変わったので備忘録としてまとめました。 大きく3つの指定方法がありますが、Deployment Infoから指定する方法とinfo.plistで指定する方法はほぼ同じで …

プロフィール


1972年神奈川県生まれ。ソフトウェアエンジニアとして生きています。最近はクライアントアプリからサーバーサイドまで幅広くやってます。