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
Другие вопросы по тегам