UIViewからはみ出したViewを見れなくする方法

はじめに

UIViewは、初期設定だと画面からViewがはみ出してもそのまま表示されてしまいます。

例えば以下のように高さ230pxのUITableViewCellがあるとして、

f:id:project-unknown:20180516230227p:plain:w400

UITableViewで表示する際に、最初隠したい為に、44pxとした場合、以下のように崩れてしまいます。

f:id:project-unknown:20180516230328p:plain:w400

今回はその解決法です。

解決方法 clipsToBounds を使う

今回の事例では、clipsToBoundsを使うと簡単に解決出来ます。
clipsToBoundsと言えば、UIImageViewでimageがViewの外に出ないようにする時によく使われますが、UIViewに対しても適用されます。

今回は、UITableViewCellのUIViewの範囲を出てほしくないので、Cell本体にこの設定を入れます。

class LogDetailDateTableViewCell: UITableViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.clipsToBounds = true
    }
}

これでUITableViewCellの描画範囲を超えた描画は行われません。

f:id:project-unknown:20180516230908p:plain:w400

必要な時に、今回の例で言うとDatePickerを載せたCellを足すと言うのもありますが、今回の例では、日付を管理するLabelとDatePickerを同一Cellとして扱ったほうがリソース管理の意味では良いので、高さ改変に耐えれる方法のご紹介でした。