【发布时间】:2015-11-15 13:25:53
【问题描述】:
我有一个UIView (popup) 和多个UIButtons (sender)。如果我触摸sender,我想将popup 置于sender 的坐标处。
但是,从自动布局开始,popup 总是在刷新时移回初始位置。我知道我必须使用约束并以编程方式更改它们。
不幸的是,我不知道如何使用约束来调整下面的代码。尤其是popup 比sender 大。
谁能给我一些建议,告诉我如何在启用自动布局的情况下将UIViews 中心移动到发件人的中心?谢谢!!
这是显示问题的以下代码的屏幕图像:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var number: UIImageView!
@IBOutlet weak var popup: UIView!
@IBAction func openPopup(sender: UIButton) {
self.popup.center = sender.center
//old position: (190.5, 124.0) - new Position: (173.0, 414.0)
}
@IBAction func updateImage(sender: UIButton) {
self.number.image = UIImage(named: "img-1")
}
}
这是我到目前为止所拥有的,但我不知道这是否正确以及我必须使用什么类型的NSLayoutConstraint 来实现这一点:
import UIKit
class ViewController: UIViewController {
var id = 1
@IBOutlet weak var number: UIImageView!
@IBOutlet weak var popup: UIView!
@IBOutlet weak var popupy: NSLayoutConstraint!
@IBOutlet weak var popupx: NSLayoutConstraint!
@IBAction func openPopup(sender: UIButton) {
popupx.constant = reposition(popup, position: sender.center).y
popupy.constant = reposition(popup, position: sender.center).x
}
@IBAction func updateImage(sender: UIButton) {
if id == 1 {
id = 2
}else {
id = 1
}
self.number.image = UIImage(named: "\(id)")
}
func reposition (element: UIView, position: CGPoint)->CGPoint
{
var p = CGPoint()
p.x = position.x - (element.frame.size.height / 2 )
p.y = position.y - (element.frame.size.width / 2)
return p
}
}
【问题讨论】:
标签: swift uiview autolayout