在 SDCAlertView 中添加约束
Posted
技术标签:
【中文标题】在 SDCAlertView 中添加约束【英文标题】:Adding constraints in SDCAlertView 【发布时间】:2016-03-29 04:19:13 【问题描述】:我正在使用 pod SDCAlertView,我需要在我的内容视图中添加一个 imageView + 一个 textField,但是我的约束有问题,下面是我的代码。
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.image = UIImage(named: "kalafina")
imageView.contentMode = .ScaleAspectFill
let alert = AlertController(title: "Testing", message: "1234")
imageView.translatesAutoresizingMaskIntoConstraints = false
alert.contentView.addSubview(imageView)
let imageHeightConstraint = NSLayoutConstraint(item: imageView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100)
let imageWidthConstraint = NSLayoutConstraint(item: imageView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100)
let imageCenterXConstraint = NSLayoutConstraint(item: imageView, attribute: .CenterX, relatedBy: .Equal, toItem: alert.contentView, attribute: .CenterX, multiplier: 1.0, constant: 0.0)
let imageTopConstraint = NSLayoutConstraint(item: imageView, attribute: .Top, relatedBy: .Equal, toItem: alert.contentView, attribute: .Top, multiplier: 1.0, constant: 0)
let imageBottomConstraint = NSLayoutConstraint(item: imageView, attribute: .Bottom, relatedBy: .Equal, toItem: alert.contentView, attribute: .Bottom, multiplier: 1.0, constant: 0)
alert.view.addConstraint(imageTopConstraint)
alert.view.addConstraint(imageBottomConstraint)
alert.view.addConstraint(imageHeightConstraint)
alert.view.addConstraint(imageWidthConstraint)
alert.view.addConstraint(imageCenterXConstraint)
alert.addAction(AlertAction(title: "Cancel", style: .Preferred))
alert.addAction(AlertAction(title: "Ok", style: .Default, handler: action in
print("Sending")
))
alert.present()
这是我的结果
【问题讨论】:
你期待什么结果? 根据github.com/sberrevoets/SDCAlertView/issues/146,他提到如果我正确添加约束,警报应该相应地调整大小 【参考方案1】:您将约束添加到alert.view
,但您应该将它们添加到alert.contentView
。如果你这样做,一切都会按预期进行。
【讨论】:
toItem: alert.contentView,很确定我添加到 contentview 是的,但您随后致电alert.view.addConstraint()
。这会在准备加载视图之前加载视图。如果您将其更改为alert.contentView.addConstraint()
,它应该可以正常工作。以上是关于在 SDCAlertView 中添加约束的主要内容,如果未能解决你的问题,请参考以下文章
在 Objective-C 类中使用时如何自定义 SDCAlertView
SDCAlertView 回调 clickButtonAtIndex 在 iOS 运行时未被调用
SDCAlertView 和 UIViewController 与 UIButton