画面サイズを取得した後UIに反映させるためにはどうしたら良いのでしょうか?
Getscreenみたいなのをつかえばいいのですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/26 18:53
回答1件
0
画面サイズ指定がCGFloatなのでUIScreenUtil
構造体のメソッドの戻り値を変更しましたが、以下の様に生成したViewのサイズに使うことができます。
コードで生成したViewの場合
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 // マージンの定数 6 let margin: CGFloat = 50 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 // UIViewを生成 12 let customView = UIView() 13 // customViewの背景色を設定 14 customView.backgroundColor = UIColor.blueColor() 15 // 取得した画面サイスを使ってcustomViewのサイズを設定します。(上下左右に50pxのマージン) 16 customView.frame = CGRectMake(margin, margin, UIScreenUtil.screenWidth() - margin * 2, UIScreenUtil.screenHeight() - margin * 2) 17 // 画面に載せます 18 view.addSubview(customView) 19 } 20} 21 22 23struct UIScreenUtil { 24 static func bounds()->CGRect{ 25 return UIScreen.mainScreen().bounds; 26 } 27 static func screenWidth() -> CGFloat { 28 return UIScreen.mainScreen().bounds.size.width; 29 } 30 static func screenHeight() -> CGFloat{ 31 return UIScreen.mainScreen().bounds.size.height; 32 } 33}
StoryboardのViewControllerに載せたViewの場合
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 // マージンの定数 6 let margin: CGFloat = 50 7 8 // Storyboardに載せたview 9 @IBOutlet weak var customView: UIView! 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 } 15 16 override func viewDidLayoutSubviews() { 17 super.viewDidLayoutSubviews() 18 19 // customViewの背景色を設定 20 customView.backgroundColor = UIColor.blueColor() 21 // 取得した画面サイスを使ってcustomViewのサイズを設定します。(上下左右に50pxのマージン) 22 customView.frame = CGRectMake(margin, margin, UIScreenUtil.screenWidth() - margin * 2, UIScreenUtil.screenHeight() - margin * 2) 23 24 } 25} 26 27 28struct UIScreenUtil { 29 static func bounds()->CGRect{ 30 return UIScreen.mainScreen().bounds; 31 } 32 33 static func screenWidth() -> CGFloat { 34 return UIScreen.mainScreen().bounds.size.width; 35 } 36 37 static func screenHeight() -> CGFloat{ 38 return UIScreen.mainScreen().bounds.size.height; 39 } 40}
画面サイズが変わっても取得したサイズを使用しているので周囲の50pxマージンは維持されます。
以下の画像のようなエラーがでていますか?その場合下の対応を試してみてください。
Storyboardに配置したViewとcustomViewを以下の様に結んでください。
それでも解決しない場合は他の原因が考えられますのでコードを載せて頂くと原因が見つけやすいと思います。
投稿2016/03/26 15:59
編集2016/03/30 15:40総合スコア8490
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/30 06:05
2016/03/30 15:42
2016/03/31 00:16
2016/03/31 15:49
2016/03/31 15:52
2016/03/31 15:59
2016/04/01 04:32
2016/04/01 04:48
2016/04/01 06:39 編集
2016/04/03 06:30
2016/04/03 06:50 編集
2016/04/04 04:20
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。