【发布时间】:2017-05-16 09:54:41
【问题描述】:
我有两个示例函数。两者都做同样的事情。区别在于变量“objectName”的类型。
第一个作品。我很具体并将类型设置为 UILabel。显然我只能将它与 UILabel 类型的对象一起使用,并且为每种类型重新创建函数只是丑陋的。
func _setUILabelTop(objectName: UILabel, location: CGFloat, offset: CGFloat) {
let originalBottom = objectName.frame.origin.y + objectName.frame.size.height
objectName.frame.origin.y = location + offset
objectName.frame.size.height = originalBottom - objectName.frame.origin.y
}
第二个不起作用。使用了 AnyObject,XCode 在函数的第 2 行和第 3 行给我一个错误。它突出显示文本 objectName.frame 并显示错误:无法分配给“CGFloat”类型的不可变表达式
func _setObjectTop(objectName: AnyObject, location: CGFloat, offset: CGFloat) {
let originalBottom = objectName.frame.origin.y + objectName.frame.size.height
objectName.frame.origin.y = location + offset
objectName.frame.size.height = originalBottom - objectName.frame.origin.y
}
我的问题:
- 是否存在允许 UILabel、UIButton、MKMapView 的对象类型
- 是否有更好的方法来指定上、下、左或右 单独属性,无需计算宽度?
请轻点,我使用 XCode 和 Swift 才几天,这也是我在 StackOverflow 上的第一篇文章。 =)
【问题讨论】:
标签: ios swift cgfloat anyobject