2017-06-06 32 views
0
`lblAddress.frame.width` 
`lblAddress.frame.size.width` 

我已搜查如此多的時間,但我仍然沒有指出......是什麼lblAddress.frame.widthlblAddress.frame.size.width之間的差異。它給了我相同的輸出..我不知道哪一個使用時?的UILabel得到幀的寬度或高度

請建議一些例子,以便我可以弄清楚整個事情。

回答

1

他們是(幾乎)相同。 一個是width of CGRect,另一種是width of CGSize

唯一的區別是frame.width將始終返回正值,因爲frame.size.width可能會在某些情況下返回負值。

如果我只關心標準幾何,我會直接使用簡寫frame.width

+0

謝謝.... :) – Foolish

1

框架和大小都有寬度屬性。您可能會感到困惑,因爲大小也是框架的屬性。這就像我問你我有什麼顏色的鞋子,但下一刻問我腳上有什麼顏色的鞋子,我問的是同樣的事情,這對我來說可能是方便的,根據我的情況。

+0

謝謝.... :) – Foolish

0

你想找到原點使用此代碼 這裏ViewSend

self.ViewSend.frame.origin.y 

你想找到HIGHT所以用這個代碼

self.ViewSend.frame.size.height 

你想找到寬度來看出口所以使用此代碼

self.ViewSend.frame.size.width 
+0

謝謝.... :) – Foolish

0

他們幾乎一樣;然而,fram.width是一個只有值,但frame.size.width可用於設置或獲取值

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.