基于派生的 CGRect 名称设置 UIButton 框架是否返回 CGRectZero?
Setting a UIButton frame based on a derived CGRect name is returning CGRectZero?
请查看下面的代码以了解我要实现的目标的要点,我将非常感谢有关如何实现它的建议。我正在使用 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.
}
//Do any initial animations once the view appears to the user. ------------------------------------
override func viewDidAppear(_ animated: Bool) {
playBubble.frame = bubble1 //playBubble is a UIButton
}
//标记:- 交互
@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 中的数字时(因为它是唯一发生变化的东西),它将我的 playBubble (UIButton) 设置为 CGPoint(0,0)。
是什么导致了这种情况的发生?我知道它可能是 'badly formatted',但是在我的 CGRect 中换出这个数字的正确方法是什么?
非常感谢!
CGRectFromString
需要一个像 "{{10,20},{35,47}}"
这样的字符串,它可以解析并转换为 CGRect
。它不能用于 select 来自顺序命名变量的值。您可以使用数组来做到这一点。
将气泡矩形放入数组文字中,并使用 playBubblePosition - 1
作为 select 所需的索引:
playBubble.frame = [bubble1, bubble2, bubble3, bubble4][playBubblePosition - 1]
请查看下面的代码以了解我要实现的目标的要点,我将非常感谢有关如何实现它的建议。我正在使用 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.
}
//Do any initial animations once the view appears to the user. ------------------------------------
override func viewDidAppear(_ animated: Bool) {
playBubble.frame = bubble1 //playBubble is a UIButton
}
//标记:- 交互
@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 中的数字时(因为它是唯一发生变化的东西),它将我的 playBubble (UIButton) 设置为 CGPoint(0,0)。
是什么导致了这种情况的发生?我知道它可能是 'badly formatted',但是在我的 CGRect 中换出这个数字的正确方法是什么?
非常感谢!
CGRectFromString
需要一个像 "{{10,20},{35,47}}"
这样的字符串,它可以解析并转换为 CGRect
。它不能用于 select 来自顺序命名变量的值。您可以使用数组来做到这一点。
将气泡矩形放入数组文字中,并使用 playBubblePosition - 1
作为 select 所需的索引:
playBubble.frame = [bubble1, bubble2, bubble3, bubble4][playBubblePosition - 1]