1

Xcode 9.1のUILabelにオフセットされた背景を作成しようとしています。カスタムUIViewのintrinsicContentSizeの幅が偶然大きな値またはゼロになる

私はUILabelを含むUIViewの@IBDesignableサブクラスを持っています。私は次の制約があります。

  1. label.centerX == self.centerX
  2. label.centerY == self.centerYを
  3. 幅:自己== 1×ラベル+オフセット。 (オフセットは通常 - 20)
  4. 高さ: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しか作成できないと不満を募っていました。

Large value screenshot

Interface Builder complaint

他の例では、ビューintrinsicContentSize.widthは0で、私のビューのためにintrinsicContentSizeのプレースホルダを設定することは助けにはなりません。

他の迅速なファイルに移動して戻ってくると変更される可能性があります。ときには正しい値を示すことがありますが、ほとんどの場合、偽のものです。

通常、最終的なレイアウトは意図したものなので、実行時には動作しますが、このビューではInterface Builderを使用できません。

また、空のテキストまたは '。'のような1文字のテキストでUILabelを初期化しようとしました。とフレーム(0,0,1,1)私は多分ゼロフレームと無関係のテキストは、この動作を提供すると思ったが、どちらも役に立たないようだ。

Interface Builderで私のOffsetLabelを使用できるように、これを修正する方法がありますか?なぜこれが起こるのですか?

答えて

0

Xcodeを再起動すると、しばらくの間期待どおりに動作するようです。

関連する問題