如何通过点击其他 UIButton 来移动 UILabel?
Posted
技术标签:
【中文标题】如何通过点击其他 UIButton 来移动 UILabel?【英文标题】:How to move UILabel via taping other UIButton? 【发布时间】:2016-11-30 18:29:41 【问题描述】:我对使用 XCode 和 Swift 很陌生,所以我想知道如何移动 UILabel。这是我的代码:
@IBAction func startButton(_ sender: UIButton)
sender.isHidden = true
drawtarget()
var hosPos = Int(arc4random_uniform(253)) + 10
var verPos = 580
func drawtarget()
let button = UIButton(frame: CGRect(x: hosPos, y: verPos, width: 47, height: 47))
button.backgroundColor = UIColor(red: 102/255, green: 205/255, blue: 255/255, alpha: 1.0)
button.layer.cornerRadius = 0.5 * button.bounds.size.width
button.addTarget(self, action: #selector(foo(sender:)), for: .touchUpInside)
view.addSubview(button)
func creatingShot(_ sender: UILabel)
let shot = UILabel(frame: CGRect(x: 217, y: 50, width: 8, height: 8))
shot.backgroundColor = UIColor.green
shot.text = ""
view.addSubview(shot)
func foo(sender: UIButton)
sender.isHidden = true
perform(#selector(drawtarget), with: nil, afterDelay: 3.0)
hosPos = Int(arc4random_uniform(253)) + 10
verPos = 600
所以,我需要将镜头(UILabel)移动到按钮(UIButton,被按下)的中心。有什么想法吗?
【问题讨论】:
【参考方案1】:使用 AutoLayout,只需将它们的 centerAnchors 设置为彼此相等:
@IBOutlet weak var myLabel:UILabel!
@IBOutlet weak var myButton:UIButton!
@IBAction func moveLabelToMe(sender: UIButton)
myLabel.centerXAnchor.constraint(equalTo: myButton.centerXAnchor).isActive = true
myLabel.centerYAnchor.constraint(equalTo: myButton.centerYAnchor).isActive = true
UIView.animate(withDuration: 0.3) self.view.layoutIfNeeded()
注意事项:
最后一行代码有助于为事物赋予动画效果。 长期而言,除非您绝对需要使用框架和 CGRects,否则尽可能学习并坚持使用 AutoLayout(在 IB 和代码中)。学习起来可能会让人望而生畏,但它使事情更加独立于设备。 在代码中使用 AutoLayout 时,请记住始终将视图设置为将其 translatesAutoresizingMaskIntoConstraints 设置为 false。这是每个人(包括我)最常犯的错误之一。 如果您将 IB 用于 AutoLayout,则可以像查看视图一样为约束设置 IBOutlets。 有几种方法可以对约束进行编码。一个是上面的(使用is*Active),另一个是设置可以作为批处理激活和停用的约束数组。【讨论】:
【参考方案2】:试试这个...
将标签和按钮都定义为全局实例。
UIView.animateWithDuration(1.0,
delay: 0.0,
options: .CurveEaseInOut,
animations:
shot.center = button.center
,
completion: finished in
)
【讨论】:
以上是关于如何通过点击其他 UIButton 来移动 UILabel?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过子类化 UIButton 来获取按钮的背景图像名称?
通过点击它来改变 UIView/UIControl 的屏幕位置