Ios 为什么约束不能以编程方式工作?
我想在手机旋转时更改imageView的高度约束,我使用了以下代码:Ios 为什么约束不能以编程方式工作?,ios,swift,uiimageview,constraints,Ios,Swift,Uiimageview,Constraints,我想在手机旋转时更改imageView的高度约束,我使用了以下代码: var newPageView = UIImageView(image: nil) override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { let heightConstraint = NSLayoutCons
var newPageView = UIImageView(image: nil)
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
let heightConstraint = NSLayoutConstraint(item: newPageView, attribute: .Height, relatedBy: .Equal, toItem: newPageView.superview, attribute: .Height, multiplier: 1, constant: 600)
newPageView.superview!.addConstraint(heightConstraint)
}
但它不起作用。我的代码片段有什么错误
imageView
的高度,您需要将约束添加到imageView
,而不是superview
var imageView = UIImageView(image: nil)
var heightConstant : NSLayoutConstraint!
override func viewDidLoad()
{
super.viewDidLoad()
heightConstant = NSLayoutConstraint(item: imageView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 800)
imageView.addConstraint(heightConstant)
}
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
{
heightConstant.constant = 600
}
imageView
的高度,您需要将约束添加到imageView
,而不是superview
var imageView = UIImageView(image: nil)
var heightConstant : NSLayoutConstraint!
override func viewDidLoad()
{
super.viewDidLoad()
heightConstant = NSLayoutConstraint(item: imageView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 800)
imageView.addConstraint(heightConstant)
}
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
{
heightConstant.constant = 600
}
你有没有检查过这个链接-@rajapt我想要它在Swift中,而不是在objc中,你说它不工作是什么意思;图像的大小是否会更改为您想要的大小以外的其他大小?您只需在viewDidLoad或类似工具上设置一次高度约束。de设备旋转时,高度将根据您的约束自动调整大小。在您的示例中,每次设备旋转时,您都会一次又一次地添加约束,这可能会导致不可预测的结果。您是否检查了此链接-@Rajatp我希望它在Swift中,而不是在objc中?您的意思是它不起作用;图像的大小是否会更改为您想要的大小以外的其他大小?您只需在viewDidLoad或类似工具上设置一次高度约束。de设备旋转时,高度将根据您的约束自动调整大小。在您的示例中,每次设备旋转时都会反复添加约束,这可能会导致不可预测的结果。