2017-04-26 81 views
0

我試圖按照如下方式編程添加按鈕。以編程方式定義UIButton快速

lazy var myButton: UIButton = { 
     let button = UIButton(type: .System) 
     button.translatesAutoresizingMaskIntoConstraints = false 
     button.backgroundColor = UIColor.blueColor() 
     button.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2) 
     button.addTarget(self, action: "buttonAction", forControlEvents: .TouchUpInside) 
     return button 
    }() 

我的目的是創建一個視圖的寬度和高度,一半的視圖的高度的按鈕。我也有LeftAnchor,RightAnchor,WidthAnchor,TopAnchor約束到這個按鈕。

我有下面這段代碼在我viewDidLoad()

view.addSubview(myButton) 

當我嘗試運行此代碼,我不能看到什麼,我想對我的模擬器。 我想看看button width = view'width and height of button = view height/2

而是我在模擬器的左上方看到一個小按鈕。我如何解決這個問題?

謝謝!

+0

您描述的行爲建議您*沒有定義約束條件,張貼他們,似乎說這個問題是 那裏。您能否發佈定義約束的代碼? – dfd

+0

'myButton.rightAnchor.constraintEqualToAnchor(view.rightAnchor).active = true myButton.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true myButton.leftAnchor.constraintEqualToAnchor(view.leftAnchor).active = true myButton.topAnchor.constraintEqualToAnchor( view.topAnchor).active = true'這是我寫的約束代碼 – MK4

+0

這看起來像Swift 2代碼,就像Swift 3中的isActive一樣。正確?另外,你是否嘗試了前/後而不是左/右? – dfd

回答

1

更好的選擇是使用AutoLayoutConstraints。

var myButtonHeight: NSLayoutConstraint 

view.addSubview(myButton) 
myButton.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
myButtonHeight = myButton.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5) 
myButtonHeight.isActive = true 

這不是從您的評論清楚,如果按鈕高度的變化是onTouchDown,如果其切換爲onTouchUpInside結果,但無論哪種方式的

myButtonHeight.constant = (buttonShouldBeTall) ? 20 : 0 
view.setNeedsLayout() 

請記住,你會需要定位前導/尾隨/中心X定位點以及前導/尾隨/中心定位點定位點,具體取決於您需要的定位點

+0

我以前用過這個,但我的要求是改變點擊時按鈕的高度如果我使用autolayout,Xcode不允許我做了改變按鈕的高度因爲約束。任何其他想法? – MK4

+0

@ MK4請參閱我的編輯 – dmorrow