【问题标题】:Xcode 7 Swift 2 - Move button within a specific view areaXcode 7 Swift 2 - 在特定视图区域内移动按钮
【发布时间】:2016-05-04 09:44:26
【问题描述】:

我想在视图对象的特定区域内移动按钮的位置(X 和 Y)。

到目前为止,我所做的是,我在主屏幕上添加了一个视图对象,并且我还在视图中添加了一个按钮,到目前为止还可以。

现在,我设法获得了视图对象的边界,并且我知道按钮的大小(50x50)。所以我想要的是,当我单击按钮时,它应该移动到另一个随机位置,但在视图对象内,它不应该移动到视图对象边界之外。现在,我的按钮中发生的事情似乎是根据随机 X 和 Y 将它的一部分移动到视图对象之外。

任何帮助将不胜感激。

【问题讨论】:

  • 我已经完成了。
  • 我正在尝试找出完全相同的事情,请您发布您的解决方案。
  • @Lkabo 我会尽快贴出代码,我从网上收集了解决方案。
  • @Lkabo 我正在尝试粘贴代码,但我不知道如何在代码模式下获取它...它不显示为代码,而是显示为一个段落。有什么建议吗?

标签: button view move area bounds


【解决方案1】:

我也设法得到它。这是我的做法:

我创建了一个函数,我将形状传递给该函数并返回我希望该块移动到的位置,该位置在视图的范围内。

    func randomizeLocation(shape: CGRect) -> CGPoint {


    let randomX = arc4random_uniform(UInt32(gameBoard.frame.width - shape.width)) + UInt32(shape.width / 2)
    let randomY = arc4random_uniform(UInt32(gameBoard.frame.height - shape.height)) + UInt32(shape.height / 2)



    return CGPointMake(CGFloat(randomX), CGFloat(randomY))
}

只是在谈论 x 坐标(左/右) 这里的逻辑是 arc4random_uniform 将返回一个介于 0 和给定数字 (- 1) 之间的随机 #。

但您不希望从零开始的数字,因为这会使对象离开屏幕边缘向左 1/2。所以,如果你将 1/2 的宽度添加到整个函数中,你将永远不会离开屏幕的左侧。

为避免离开屏幕右侧,您需要屏幕宽度的最大数减去对象宽度的 1/2。为此,您必须将传递给 arc4random 函数的数字指定为减去形状的整个宽度,因为当您添加后半部分时,您将移动 1/2对象两侧的宽度(最小和最大返回值)。

所以要使用这个函数,拿你的对象,比如说一个 UILabel 并将它的中心设置为这个函数结果:

let myLabel = UIButton(type: .Custom)
myLabel.frame = CGRectMake(100, 100, 100, 100)
myLabel.center = randomizeLocation(myLabel.bounds)

那就是它。顺便说一句,我没有考虑返回 b/c 中的 -1,我认为一个像素太微不足道了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2016-08-17
    相关资源
    最近更新 更多