Swift 基于派生的CGRect名称设置UIButton帧是否返回CGRectZero?
请查看我下面的代码,以了解我试图实现的要点,我将非常感谢关于如何实现它的建议。我正在使用Swift:Swift 基于派生的CGRect名称设置UIButton帧是否返回CGRectZero?,swift,uibutton,concatenation,cgrect,Swift,Uibutton,Concatenation,Cgrect,请查看我下面的代码,以了解我试图实现的要点,我将非常感谢关于如何实现它的建议。我正在使用Swift: var playBubblePosition = 1 var bubble1 = CGRect(x: 0, y: 0, width: 0, height: 0) var bubble2 = CGRect(x: 0, y: 0, width: 0, height: 0) var bubble3 = CGRect(x: 0, y: 0, width: 0, height: 0) var bubbl
var playBubblePosition = 1
var bubble1 = CGRect(x: 0, y: 0, width: 0, height: 0)
var bubble2 = CGRect(x: 0, y: 0, width: 0, height: 0)
var bubble3 = CGRect(x: 0, y: 0, width: 0, height: 0)
var bubble4 = CGRect(x: 0, y: 0, width: 0, height: 0)
override func viewDidLoad() {
super.viewDidLoad()
//This isn't necessary to share (too long), but in my viewDidLoad
//method, I am setting the values of bubble1, bubble2, bubble3 and
//bubble4 based on screen size. It prints to the log correctly.
}
//马克:互动
@IBAction func TEMP1(_ sender: Any) {
playBubble.frame = CGRectFromString("bubble\(playBubblePosition)")
self.view.layoutIfNeeded()
playBubblePosition += 1
if playBubblePosition == 5 {
playBubblePosition = 1
}
}
如果我设置:
playBubble.frame = bubble1
它工作正常。然而,当尝试交换bubble1、bubble2、bubble3和bubble4中的数字时(因为这是唯一改变的事情),它将我的playbuble(UIButton)设置为CGPoint(0,0)
是什么导致了这一切?我知道它可能“格式不正确”,但在我的CGRect中交换这个数字的正确方法是什么
非常感谢
CGRectFromString
需要一个类似于“{10,20},{35,47}”的字符串
,它可以解析并转换为CGRect
。它不能用于从顺序命名的变量中选择值。您可以使用数组来实现这一点
将冒泡矩形放入数组文字中,并使用playbolbleposition-1
作为索引来选择所需的一个:
playBubble.frame = [bubble1, bubble2, bubble3, bubble4][playBubblePosition - 1]
谢谢你的回答:)事实上我也有同样的想法,当我发现它有效时,我会回来回答我自己的问题哈哈。工作完美。
playBubble.frame = [bubble1, bubble2, bubble3, bubble4][playBubblePosition - 1]