主な目標は、各行のコンテンツを水平にスクロールできるようにすることです。
私はこれをXコード5とStoryBoardを使用して実行しようとしています。
問題は単純なようですが、何時間も検索を行った後、多少似ているがプログラムのみのアプローチを使用した1つの問題以外は何も得られませんでした ここを参照 。
IBでは、下のデザインに示すような構造になっています。
githubリポジトリ内のサンプルプロジェクト も提供しています。この例には、uitableviewcellの外部で動作する「通常の」スクロールビューも含まれています。
とても基本的なことを見落としたと言ってください。
ストーリーボードでAutolayoutがアクティブになります(これは良いことです)。 UIScrollViewのスクロール可能なサイズは、そのサブビューの制約に基づいて計算されます。
したがって、UIScrollView内のUIImageViewに「スーパービューの上部、下部、先頭、末尾のスペース」を追加する必要があります。それらはすべて0に設定できます。
ここで、UIImageViewに制約を追加しない場合、その固有のContentSizeサイズが使用されます。
制約は次のようになります。
セルのコンテンツビューにも制約がなかったことに注意してください。
制約が完了したら、コードからすべてのsetContentSize:呼び出しを削除します。
これの別の代替方法は、カスタムUITableViewCell内でUICollectionViewを使用することです
私も同じ問題を抱えており、scrollviewのコンテンツビューを削除して再度追加すると機能することがわかりました。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.label removeFromSuperview];
[self.scrollView addSubview:self.label];
self.scrollView.contentSize = self.label.frame.size;
}
これは最もエレガントなソリューションではありませんが、私にとってはうまくいきます。
setContentSize
がviewDidLayoutSubviews
とscrollViewDidEndZooming:withView:atScale:
で呼び出されていることを確認します。 iOS6では、これらのメソッドにコードがない場合、デフォルトの動作は正常に機能しました。新しいレイアウトシステムを備えたiOS7では、それらは必須です。セットアップのために複数回呼び出される可能性があります。setContentSize
を呼び出し続けるだけです。
私のxCode 4では、Storyboard
にアクセスできません。
まず、UITableView
をViewController
に接続する必要があります。 UITableViewCell
はUITableView
の中にあります。そのため、UITableView
の設定を変更する必要があります。接続後、次のようにcontentinset
のUITableView
を変更してみてください。
[self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 2500, 2500)];
これが機能しない場合は、TableViewのコンテンツサイズを変更してみることもできます。動作する前にUIView
のサイズを変更する必要があるかもしれません。
新しいautolayoutモードにより、iOS 7は、UIScrollViewを使用する多くのiOS 6以前のアプリを壊してしまったようです。私は最近同様の質問を投稿しました[モデレーターによって保留にされているため、表示できない可能性があります]ここで、ユーザーLv.BeLeCkは次を使用して成功を見つけました:
self.automaticallyAdjustsScrollViewInsets = NO;
スクロールビューを保持しているビューコントローラで。スクロールビューのインスタンス化の後に置くだけです。それが機能するかどうかを確認し、機能する場合は、彼の貢献に賛成票を投じてください。
根本的な原因は、インスタンス化時にUIScrollViewsが現在のコンテンツに基づいてサイズを更新していることです。
なぜAppleわからないことを考えたかったのです。複数行のラベルの上部と下部の配置をまだ待っています!
IBで状況を修正します。
「ID値セクション-ユーザー定義ランタイム属性」内の同じ値をキー「フレーム-長方形-CGRectValue」と「サイズインスペクター-ビュー値」に等しくする必要があります。
これがお役に立てば幸いです。
今日も同じ問題があります。数時間探し続けた後、セルの選択を[なし]から[デフォルト]に戻すことで解決します。それが他の人を助けることを願っています。