【问题标题】:Using variables in CGRectMake, Swift, UIkit在 CGRectMake、Swift、UIkit 中使用变量
【发布时间】:2015-06-07 09:44:14
【问题描述】:

对于我正在制作的应用程序,我需要使用变量来更改对象(标签)的大小和位置。我试过var example = CGRectMake(0, 0, 0, 100),希望它会忽略零(虽然不是真的认为它)。然后我尝试了:

var example = 100
Label1.frame = CGRectMake(20, 20, 50, example)

我稍微改变了语法,添加了“”并将CGRectMake替换为CGRect等,但没有任何效果......我不明白我在这里做错了什么......帮助!

【问题讨论】:

  • 保存旧标签的框架,然后将这些值设置为在新位置保持不变的值????

标签: ios xcode swift uikit


【解决方案1】:

Swift 3 更新

let rect = CGRect(x: 0, y: 0, width: 100, height: 100)

【讨论】:

    【解决方案2】:

    CGRectMakeCGFloats 用于其所有参数。如果您使用类型标识符指定 example 应该是 CGFloat,您的示例代码应该可以正常工作:

             //  v~~~~ add this...
    var example: CGFloat = 100
    Label1.frame = CGRectMake(20, 20, 50, example)
    

    否则,swift会推断example的类型为Int,而对CGRectMake的调用失败,因为它不能将Int作为参数...

    【讨论】:

    • 这个答案已经过时了。见下文。
    【解决方案3】:

    所以,给猫剥皮的方法有很多。这完全取决于您的需求和要求(也许您可以详细说明您要实现的目标?)。但一种方法可能是在发生某些事情时设置一个变量,然后更新标签的框架。如果您在视图中添加了轻击手势识别器,并像这样更新了标签:

    let myLabel = UILabel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let tapGestRecog = UITapGestureRecognizer(target: self, action: "handleTap:")
        self.view.addGestureRecognizer(tapGestRecog)
    }
    
    func handleTap(sender:UIGestureRecognizer) {
    
        let newXposition = sender.locationInView(self.view).x
        let newYposition = sender.locationInView(self.view).y
    
        myLabel.frame = CGRectMake(newXposition, newYposition, 200, 200)
    }
    

    这只是一个例子,而且是一种非常粗暴的做法。还有很多其他方法可以做到这一点,但希望它能让您了解如何实现它。

    【讨论】:

      【解决方案4】:

      Swift 允许 Objective-C 不允许的语法:

      var example = 100
      label.frame.size.height = example
      

      在 Objective-C 中,您必须以不同的方式进行:

      CGRect frame = label.frame;  //Create a temporary rect to hold the frame value
      frame.size.height = example;
      label.frame = frame;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 2016-11-15
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多