在 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

自定义 SDCAlertView

当用户触摸警报时,如何防止我的 SDCAlertview 关闭?

UIView 内的表格不滚动或接收触摸