UIButton
の内側にUIView
があります。私のUIButton
には、ストーリーボードで設定した制約があります。ここで、UIButton
の中心をUIView
の中心に設定します。それをプログラムでどのように実行しますか?
次のような.center
プロパティを試してください
myButton.center = self.view.center
必要に応じて、x
およびy
も指定できます。
myButton.center.x = self.view.center.x // for horizontal
myButton.center.y = self.view.center.y // for vertical
このアプローチでは、Using NSLayoutConstraintを使用しています。ここで、self.cenButはボタンのIBoutletです。
func setupConstraints() {
let centerX = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
let centerY = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
let height = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 22)
self.cenBut.translatesAutoresizingMaskIntoConstraints = false
self.view.addConstraints([centerX, centerY, height])
}
ViewDidLoad()内
self.view.removeConstraints(self.view.constraints)
self.setupConstraints()
制約を使用しているため、中心を設定することはできません。そのため、中心を設定するためにも制約を使用する必要があります。
let centerYCon = NSLayoutConstraint(item: labelMessage,
attribute: .CenterY,
relatedBy: .Equal,
toItem: contentView,
attribute: .CenterY,
multiplier: 1.0,
constant: 0.0);
contentView.addConstraint(centerYCon);
let centerXCon = NSLayoutConstraint(item: labelMessage,
attribute: .CenterX,
relatedBy: .Equal,
toItem: contentView,
attribute: .CenterX,
multiplier: 1.0,
constant: 0.0);
contentView.addConstraint(centerXCon);
自動レイアウト制約の「プログラムで」の意味を知っていると思います。本当にautolayoutを使用している場合は、ボタンのプロパティをsetTranslatesAutoresizingMaskIntoConstraintsをfalseに設定している必要があります。
私は
yourButton.setCenter(self.view.center);
ただし、プログラムでビューのフレームを設定すると、レイアウトの制約が意図したとおりに機能しない場合があることに注意してください。
これは2つの方法で実行できます。
_myButton.center = view.center //view is your parentView
_
myButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
myButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true