2016-12-05 44 views
1

StoreTabView.swift進行初始化的兩個buttonBounds.size.width是不是真正的寬度

@IBDesignable class StoreTabView: UIView

store_button = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: self.bounds.size.width/2.0, height: self.bounds.size.height)) 

user_button = UIButton.init(frame: CGRect.init(x: self.bounds.size.width/2.0, y: 0, width: self.bounds.size.width/2.0, height: self.bounds.size.height)) 

而在我的故事板的我view的類設置爲StoreTabView,並設置constrains

enter image description here

而且我發現self.bounds.size.width是不是它的真正寬度,在我的simulator-5s,邏輯分辨率應該是320而不是375,但在Debug View Hierarchy,我發現它是375

enter image description here

並在控制檯我打印兩個button顯示細節:

<UIButton: 0x7fd79be63620; frame = (187.5 0; 187.5 45); opaque = NO; layer = <CALayer: 0x60000023a9e0>> 
Printing description of $7: 
<UIButton: 0x7fd79be63360; frame = (0 0; 187.5 45); opaque = NO; layer = <CALayer: 0x60000023a8e0>> 

我們可以看到width187.5,等於375/2,所以,self.bounds.size.width爲什麼不是320 ?如何使它成爲寬度爲320?因爲button的寬度應該是160而不是187.5

+0

你在哪裏檢查self.bounds.size.width?如果你正在檢查你的視圖控制器類,它應該是self.view.bounds.size.width –

+0

@Bhavuk Jain,我編輯了我的問題,提出問題的詳細信息,請檢查。 – aircraft

+0

只是讓你可以看到自己,打印,邊界/框架在一起,所以你看到他們的區別... – Honey

回答

0

爲什麼不使用自動佈局?在這種情況下,更容易控制和創建視圖。如果你從代碼中創建按鈕,我猜你沒有使用storyboard。然後你正在尋找的約束看起來像這樣。

buttonsSuperview.addConstraint(NSLayoutConstraint(item: button, attribute: .width, relatedBy: .equal, toItem: buttonsSuperview, attribute: .width, multiplier: 0.5, constant: 1.0)) 

當然,你需要的不僅僅是這個約束(對於身高和位置)。

如果您使用故事板,它非常容易。將連接從按鈕拖到超級視圖,設置相等的寬度,然後修改約束的乘數。

1

清除您的基礎 -

一個的UIView的邊界是矩形,表示爲位置(x,y)和尺寸(寬度,高度)相對於它自己的座標系(0,0)。

UIView的框架是矩形,表示爲相對於它所包含的超級視圖的位置(x,y)和大小(寬度,高度)。

謝謝我以後:)

+0

正如你在我的問題中看到的那樣,運行模擬器是'5c',並且我已經將'contraints'設置爲'StoreTabView'。 – aircraft

相關問題