在 CGRectMake、Swift、UIkit 中使用变量

Posted

技术标签:

【中文标题】在 CGRectMake、Swift、UIkit 中使用变量【英文标题】:Using variables in 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等,但没有任何效果......我不明白我在这里做错了什么......帮助!

【问题讨论】:

保存旧标签的框架,然后将这些值设置为在新位置保持不变的值???? 【参考方案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;

【讨论】:

以上是关于在 CGRectMake、Swift、UIkit 中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

检测 Swift 中按钮的点击

Swift:尝试导入 UIKit 时出错

CGRectMake、CGPointMake、CGSizeMake、CGRectZero、CGPointZero 在 Swift 中不可用

断言失败 - [UIPickerTableView _createPreparedCellForGlobalRow:withIndexPath:],/ SourceCache / UIKit_Sim

Swift:UIKit中Demo

SWIFT / UIKit 页脚文本显示在动态 tableViewCell 上