У меня есть две примерные функции. Оба делают то же самое. Разница заключается в типа переменной "objectName".AnyObject & Невозможно назначить неизменяемое выражение типа 'CGFloat'
Первые работы. Я специфичен и задаю тип 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
- Есть ли лучший способ указать Top, Bottom, Left OR Right свойства индивидуально, без необходимости рассчитать ширину?
Пожалуйста, будьте осторожны, я использую только XCode & Swift в течение нескольких дней, и это также мой первый пост StackOverflow. =)