2016-07-19 6 views
-2

をコーナーにUIButtonを制約:私は私のビューコントローラの左上隅にそれを制約したい(スウィフト)プログラムで、私は丸いボタンで画像のために、次のコードを持って

let settingsButton = UIButton(type: .Custom) 

settingsButton.frame = CGRectMake(160, 100, 50, 50) 
settingsButton.layer.cornerRadius = 0.5 * settingsButton.bounds.size.width 
settingsButton.setImage(UIImage(named:"settingsButton.png"), forState: .Normal) 
settingsButton.clipsToBounds = true 

view.addSubview(settingsButton) 

が、私からプログラムでこのボタンを作ったので、私はストーリーボードでそれを見ることができないため、手動で移動したり拘束することはできません。このプログラムで作成されたボタンをストーリーボードのビューコントローラーで見ることができる方法はありますか?そうでない場合は、作成したこのボタンをプログラムでView Controllerの左上隅に拘束するにはどうすればよいですか?

ご協力いただきありがとうございます。

答えて

1

これを行う最も簡単な方法は、コード内にボタンを作成するので、ボタンの自動サイズ変更マスクを使用することです。まず、ボタンのframeをスーパービューの右上隅に設定します。その後、スーパービューの左と下の縁にだけ距離が変化することができるように、ボタンのautoresizingMaskを設定します。

settingsButton.frame = CGRect(x: view.bounds.maxX - 50, y: 0, width: 50, height: 50) 
settingsButton.autoresizingMask = [.flexibleLeftMargin, .flexibleBottomMargin] 
view.addSubview(settingsButton) 

私のコードは、スウィフト3構文であるが、2

それはそうスウィフト変換するのは簡単でなければなりません

自動レイアウトでは、自動サイズ変更マスクが正常に機能することに注意してください。 Appleの標準クラスの多くは、依然として自動サイズ変更マスクを内部的に使用しています。 Xcode 8では、ストーリーボードやxibに制約を加えたり、マスクを自動サイズ変更する機能が追加されています.Appleは、自信を持って適切な場合に自動サイズ設定を使用するべきだと考えています。

+0

次のエラーが表示されます。「タイプ 'UIViewAutoresizing'には 'flexibleRightMargin'というメンバーがありません」と左上隅にあるので、これを変更しています。 – evanhaus

+0

私が言ったように、私のコードをSwift 2構文に変換する必要があります。 Swift 2では、定数は '.FlexibleLeftMargin'と' .FlexibleBottomMargin'です。 –

0

私は制約として-で使用して制約、あなたはレイアウトのアンカーを使用することができますを解釈した場合。ここにある問題は次のとおりです。

  1. 常にtranslatesAutoresizingMaskIntoConstraints = falseに設定してください。
  2. レイアウトアンカーに.active = trueを設定します。
  3. iOS> = 9.0でのみ使用できます(以前のバージョンのiOSをサポートする必要がある場合は、通常NSlayoutConstraintを使用してください)。

例コード:

let settingsButton = UIButton(type: .Custom) 
view.addSubview(settingsButton) 
settingsButton.backgroundColor = UIColor.redColor() 
settingsButton.translatesAutoresizingMaskIntoConstraints = false 
settingsButton.widthAnchor.constraintEqualToConstant(50).active = true 
settingsButton.heightAnchor.constraintEqualToConstant(50).active = true 

settingsButton.topAnchor.constraintEqualToAnchor(view.topAnchor, constant: 10).active = true 
settingsButton.trailingAnchor.constraintEqualToAnchor(view.trailingAnchor, constant: -10).active = true 

settingsButton.setNeedsLayout() 
settingsButton.layoutIfNeeded() 
settingsButton.layer.cornerRadius = 0.5 * settingsButton.bounds.size.width 
settingsButton.setImage(UIImage(named:"settingsButton.png"), forState: .Normal) 
settingsButton.clipsToBounds = true 

制約が親ビューサイズの変化(風景モードに例えばデバイスの回転)に適応するための制約を使用してフレームを設定することに優れていること。

関連する問題