2016-09-04 17 views
1

私はUITableViewCellのサブクラスとUITableViewControllerのサブクラスを持っています。私は自分のカスタムセルでテーブルビューをポップアップしています。Swift UITableViewCell Subviewレイアウト更新遅延

私はストーリーボードにUITableViewCellを作成し、そのクラスを私のカスタムUITableViewCell Swiftファイルにして、それに識別子を与えました。

Image View Constraints

一定のトップスペースの制約のために:私は次の制約とUIImageViewを持っている(ストーリーボード上の)私のカスタムセルで

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("myIdentifier", forIndexPath: indexPath indexPath) 
     return cell 
} 

:それから私は、コントローラ内の細胞を作成します私はImageViewのトップがセルトップと同じになることを意味していると思っていました。

しかし、私のセル内の画像は、ビットを押し下げている:

UITableView with custom cell

白は完全に働いているだけで、テーブルのセクションヘッダ、です。しかし、イメージの上に表示されるオレンジ色のギャップ(そのオレンジはセルの背景色です)を見ることができます。

私はカスタムセルのawakeFromNibの画像フレームに設定しようとした:

@IBOutlet weak var img: UIImageView! 
override func awakeFromNib() { 
    img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height) 
} 

をしかし、これは効果がなかったので、私はlayoutSubviewsに枠を設定しようとした:

override func layoutSubviews() { 
    img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height) 
} 

は、これは働いていたが、唯一のテーブルビューをスクロールダウンしてバックアップした後。最初の2つのセルにオレンジ色のギャップがありますが、3番目のセルにスクロールしてバックアップすると、ギャップはなくなります。

これはなぜ起こっているのですか?スクロールダウンしてバックアップした後でなく、すぐに(0、0)にイメージビューを配置するにはどうすればよいですか?

答えて

1

、およびそれはうまく動作しますが、0に設定した場合は、問題のような背景色が表示されます。上限を-8に設定してみてください。

私はので、私はXcodeのは、-8

+0

うわー、奇妙な。これはうまくいった。以前は 'img.frame.minY'が8に等しいことに気付きましたが、制約を-8に設定しようとは思わなかった。ありがとう。 – user3674647

0

次のコードを通じてtableViewCellの高さを設定してください:私はセルのトップに整列するために自分の状況を再現し、ImageViewのをドラッグしようとするとXcodeの提案制約が-8ある

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UIScreen.mainScreen().bounds.width 
} 
+0

Hiに返事に感謝し、それを設定したい理由を明確にすることはできません自動レイアウトに非常に精通していませんよ。私はすでにこの関数を使って行の高さを設定しています。問題はセルの高さではなく、セルの上部とセル内のイメージビューのサブビューの間隔です。 – user3674647

関連する問題