Xcode 9.1のUILabelにオフセットされた背景を作成しようとしています。カスタムUIViewのintrinsicContentSizeの幅が偶然大きな値またはゼロになる
私はUILabelを含むUIViewの@IBDesignable
サブクラスを持っています。私は次の制約があります。
- label.centerX == self.centerX
- label.centerY == self.centerYを
- 幅:自己== 1×ラベル+オフセット。 (オフセットは通常 - 20)
- 高さ:self == mult x label + 0; (通常MULT - 1.3)
私もintrinsicContentSize
をオーバーライドしています
override var intrinsicContentSize: CGSize {
get {
var size = self.label.intrinsicContentSize
size.width += offset
size.height *= self.mult
return size
}
}
は今、時々私は、コードをデバッグし、私のオーバーライドされたintrinsicContentSize
にブレークポイントで停止するが、ほとんどInterface Builderで私はいくつかを取得し、両方の場合widthの値が20,000,010
かそれに類するもののようにばかげて大きい。彼らはかなりランダムですがかなり大きいです。前回のInterface Builderでは、10,000x10,000 UIViewしか作成できないと不満を募っていました。
他の例では、ビューintrinsicContentSize.widthは0で、私のビューのためにintrinsicContentSizeのプレースホルダを設定することは助けにはなりません。
他の迅速なファイルに移動して戻ってくると変更される可能性があります。ときには正しい値を示すことがありますが、ほとんどの場合、偽のものです。
通常、最終的なレイアウトは意図したものなので、実行時には動作しますが、このビューではInterface Builderを使用できません。
また、空のテキストまたは '。'のような1文字のテキストでUILabelを初期化しようとしました。とフレーム(0,0,1,1)私は多分ゼロフレームと無関係のテキストは、この動作を提供すると思ったが、どちらも役に立たないようだ。
Interface Builderで私のOffsetLabelを使用できるように、これを修正する方法がありますか?なぜこれが起こるのですか?