2017-04-26 8 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) 

に次のコードを持って、私はシミュレータ上で持つようにしたいかを正確に見ることはできませんよ。 ボタンの幅と高さを表示したい=ボタンの高さ/高さ/ 2

代わりに、シミュレータの左上に小さなボタンが表示されます。どうすればこの問題を解決できますか?

ありがとうございます!

+0

あなたが記述した動作は、制約を定義していない*それを掲示すると、問題は そこ。制約を定義するコードを投稿してください。 – dfd

+0

'myButton.rightAnchor.constraintEqualToAnchor(view.rightAnchor).active =真myButton.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active =真myButton.leftAnchor.constraintEqualToAnchor(view.leftAnchor).active =真myButton.topAnchor.constraintEqualToAnchor( view.topAnchor).active = true'これは私が書いた制約コードです – MK4

+0

Swift 3のようにSwift 2コードのように見えますが、isActiveです。正しい?また、左/右の代わりに先行/後尾を試しましたか? – dfd

答えて

1

もっと良い方法は、AutoLayoutConstraintsを使うことです。ボタンの高さを変更することが

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

あなたはよ覚えておいてくださいその場合onTouchUpInsideの結果としてトグルが、いずれかの方法で、onTouchDownある場合

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 

は、それはあなたのコメントから明らかではありません必要な場所に応じて、先行/後尾/中央Xアンカーと先行/後続/中央Yアンカーの位置を設定する必要があります。

+0

私はこれを以前に使っていましたが、私の要求はクリックしたときのボタンの高さを変更することです。私は制約のためにボタンの高さを変更する。他のアイデア? – MK4

+0

@ MK4私の編集を参照してください – dmorrow

関連する問題