私のビューコントローラは3つのボタンを持つスタックビューを持っています。 1つは中央に固定幅で固定され、スタックビューは他の2つのボタンが対称になるように比例して設定されます。Swift 3 - カスタムUIButton半径で制約が削除されますか?
しかし、ボタンのコーナー半径をカスタマイズしていて、アプリケーションがロードするとすぐにボタンが望ましくない形でサイズ変更されます。
Iveは、多数のスタックビューの配布と埋め込み設定を試みました。スタックビューからボタンを削除し、単純に通常のUIViewのエッジに拘束しようとしているようですが、制約が削除されるかどうかわかりません。
視覚的には、ボタンは画面の右下隅にあり、エッジとボタンの間に0のスペースがあります。現在は、複数のデバイスに見えるような制約がないような方法でレイアウトされ、大きなディスプレイにスペースがあり、シミュレータ内の小さなディスプレイで画面を終了します。
@IBOutlet fileprivate weak var button: UIButton! { didSet {
button.round(corners: [.topRight, .bottomLeft], radius: 50 , borderColor: UIColor.blue, borderWidth: 5.0)
button.setNeedsUpdateConstraints()
button.setNeedsLayout()
} }
override func viewDidLayoutSubviews() {
button.layoutIfNeeded()
}
ovverride func updateViewContraints() {
button.updateConstraintsIfNeeded()
super.updateViewConstraints()
}
使用されているUIViewの拡張子はここで見つけることができます: https://stackoverflow.com/a/35621736/5434541
適切にボタンのコーナー半径を調整するために利用されどのような解決策必要な角を丸めるための努力をコーディングしようとしました
制約がボタンを必要に応じて更新できるようにします。
両方の方法で同じ動作をしますか? – Ben
@Benはい、私は試みられたすべてのメソッドで同じ動作をします。現在のところ、これはシミュレータで発生しており、iPhone 5でテストしたところ、私が望むように動作しているように見えますが、このような予期せぬ動作によって、他のデバイスで発生する可能性があるかどうかわからなくなってしまいました。また、私はこれらのメソッドを実装するとすぐに、アプリケーションは現在多くの遅れている!私は特定の質問には関係ないと知っていますが、viewDidlayoutのサブビューを別のスレッドで実行する必要があるのか不思議です。ありがとう! – lifewithelliott