Swift 基于派生的CGRect名称设置UIButton帧是否返回CGRectZero?

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

请查看我下面的代码,以了解我试图实现的要点,我将非常感谢关于如何实现它的建议。我正在使用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 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]