UILabel获取框架宽度或高度

时间:2017-06-06 03:38:23

标签: swift cgrect cgsize

`lblAddress.frame.width`
`lblAddress.frame.size.width`

我已经搜索了这么多次,但我仍然没有指出...... lblAddress.frame.widthlblAddress.frame.size.width之间有什么区别。它给了我相同的输出..我不知道在哪个时候使用它?

请提出一些例子,以便我能弄清楚整件事。

5 个答案:

答案 0 :(得分:1)

他们(几乎)是一样的。 一个是width of CGRect,另一个是width of CGSize

唯一的区别是,frame.width将始终返回正值,因为frame.size.width在某些情况下可能会返回负值。

如果我只关心标准几何,我会直接使用速记frame.width

答案 1 :(得分:1)

框架和大小都具有width属性。您可能会感到困惑,因为大小也是框架的属性。就像我问你我的鞋子颜色是什么颜色,但下一刻询问我的脚有多少颜色的鞋子,我问同样的事情,我可能会方便地问它根据我的情况,这种或那种方式。

答案 2 :(得分:1)

要了解更多信息,您可以了解如何构建CGRect结构。

struct CGRect {
  var origin: CGPoint
  var size: CGSize
}

并添加一些额外的功能,苹果也提供了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.

答案 3 :(得分:0)

你想找到原点使用这段代码 这里 ViewSend 是视图的出口

self.ViewSend.frame.origin.y

你想要找到hight所以请使用此代码

self.ViewSend.frame.size.height

您想要找到宽度,请使用此代码

self.ViewSend.frame.size.width

答案 4 :(得分:0)

它们几乎相同;但是,fram.width是一个获取值,但frame.size.width可用于设置或获取值