UILabel получить Ширина кадра или высота
`lblAddress.frame.width`
`lblAddress.frame.size.width`
Я искал так много раз, но все же я не указал... в чем разница между lblAddress.frame.width
А ТАКЖЕ lblAddress.frame.size.width
, это дает мне тот же результат.. Я не знаю, какой использовать когда?
Пожалуйста, предложите некоторый пример, чтобы я мог разобраться в этом.
5 ответов
Они (почти) одинаковы. Один - ширина CGRect, другой - ширина CGSize.
Единственная разница в том, что frame.width
всегда будет возвращать положительные значения, так как frame.size.width
может вернуть при некоторых обстоятельствах отрицательные значения.
Я бы использовал стенографию frame.width
непосредственно, если я забочусь только о стандартизированной геометрии.
И рамка, и размер имеют свойство width. Вы можете запутаться, потому что размер также является свойством фрейма. Это похоже на то, как я спрашиваю вас, какого цвета обувь на мне, но в следующий момент спрашиваю, какого цвета обувь на моих ногах, я спрашиваю то же самое, мне может быть удобно спросить это так или иначе, в зависимости на моих обстоятельствах.
Чтобы узнать больше, вы можете посмотреть, как строится структура CGRect.
struct CGRect {
var origin: CGPoint
var size: CGSize
}
и чтобы добавить некоторые дополнительные функции, Apple также предоставляет расширение CGRect, например:
extension CGRect {
@available(iOS 2.0, *)
public var height: CGFloat { get }
@available(iOS 2.0, *)
public var width: CGFloat { get }
}
Теперь, чтобы ответить на ваш вопрос. lblAddress.frame вернет CGRect
lblAddress.frame.width //This will use the extended functionality
lblAddress.frame.size.width //this will use the actual struct
internally the width extension on CGRect will always use the same
CGSize property from struct to give the width back and hence the same
size property is accessed in both case, but the difference is the first
one is standardized and hence only gives back positive values whereas
the second will give the negative values as well.
Они почти одинаковы; тем не мение, fram.width
это значение только для получения, но frame.size.width
можно использовать для установки или получения значения
Вы хотите найти исходную точку, используйте этот код здесь ViewSend - точка зрения
self.ViewSend.frame.origin.y
Вы хотите найти высоту, так что используйте этот код
self.ViewSend.frame.size.height
Вы хотите найти ширину, поэтому используйте этот код
self.ViewSend.frame.size.width