2016-09-07 8 views
0

私はこのUIImageViewをXcodeで作成し、画像を追加しました。その後、私はUIImageViewを変更しようとするために、このコードを追加したが、そのが動作していないInterface Builderを使用して作成されたUIImageViewの幅/高さをプログラム的に変更するにはどうすればよいですか?

enter image description here

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var border: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let width = UIScreen.mainScreen().bounds.width 
    let height = UIScreen.mainScreen().bounds.height 

    border.frame.size.width = width 
    border.frame.size.height = height 
} 

答えて

1

私はあなたがViewDidLayoutSubviewsでこれをしなければならないと信じに、以下の画像を参照してください。 ViewDidLoadではなく:

override func viewDidLayoutSubviews() { 



} 
+0

うまくいきました。ありがとうございました。単なる好奇心から。私はviewWillAppear()を使用して、同じ結果を得ることができるかどうかを確認しようとしましたが、そうしませんでした。理由を知っていますか? – Suhaib

+0

StoryboardからのビューがViewDidLoadとViewDidAppearに存在する間、ViewControllerがViewDidLayoutSubviewsを呼び出すまで、次元は実際にはレイアウトされません。たとえば、ViewDidLoad/ViewDidAppearでUILabel.textを変更することはできますが、ViewDidLayoutSubviewsまでStoryboardで設定されたUILabelディメンションを変更することはできません。これであなたの質問に答えることができない場合は、私に知らせてください。 – DevKyle

+0

また、あなたが不思議に思っていた場合に備えて。ストーリーボードの寸法は、ViewDidLayoutSubviewsの後に呼び出されるため、ViewDidAppear()で変更することができます。唯一の問題は、新しいディメンションにフリックする古いディメンションが表示されることです。したがって、Storyboardディメンションを変更する適切な場所はViewDidLayoutSubviewsです。 – DevKyle

関連する問題