3

私は UIView をサブクラス化しました: http://pastebin.com/MVk1XmPSそして、それを UIViewController の別のビューに追加すると:

self.myView = MyView.newAutoLayoutView()
self.myView.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myView)

赤い背景がありません。myView幅も高さもないようです。ただし、コンテンツは表示されます。

写真 07 11 14 23 12 36

ディメンションをハードコーディングする必要があります:

self.myView.autoSetDimensionsToSize(CGSize(width: 100, height: 100))

しかし、コンテンツのサイズによって自動的に大きくなるべきではありませんか? 私はswift、xcode6.1、iOS8.1を使用しています

4

1 に答える 1

2

ビューは、コンテンツに合わせて自動的に拡大されません。ビューで有効clipsToBoundsにすると、コンテンツが非表示になります。または、ボタンをコンテンツの一部として配置すると、ボタンは表示されますが、そのsuperview境界の外にあるため、操作できません。

sizeToFitサブクラスでは、またはメソッドを実装できますがsizeThatFits:、これらはシステムによって自動的に呼び出されません。ストーリーボードでビューに制約を割り当てることを検討する必要があります。ストーリーボードを使用していない場合は、viewWillLayoutSubviewsorlayoutSubviewsメソッドでフレームを割り当てる必要があります。

を実装すると、ストーリーボードもカスタム ビューにより適したものになりますintrinsicContentSize

于 2014-11-07T22:25:08.997 に答える