質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2195閲覧

画面サイズをUIに反映

sweden1

総合スコア59

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/03/26 14:29

画面サイズを取得した後UIに反映させるためにはどうしたら良いのでしょうか?
Getscreenみたいなのをつかえばいいのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Stripe

2016/03/26 14:32

質問の内容は、画面サイズの取得方法ですか?
sweden1

2016/03/26 18:53

取得した後、どうやってUIに反映せるかがわからないです
guest

回答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マージンは維持されます。
image


以下の画像のようなエラーがでていますか?その場合下の対応を試してみてください。
image

Storyboardに配置したViewとcustomViewを以下の様に結んでください。
それでも解決しない場合は他の原因が考えられますのでコードを載せて頂くと原因が見つけやすいと思います。

image2

投稿2016/03/26 15:59

編集2016/03/30 15:40
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sweden1

2016/03/30 06:05

親切な対応ありがとうございます。 先ほど、 customView.frame = CGRectMake(margin, margin, UIScreenUtil.screenWidth() - margin * 2, UIScreenUtil.screenHeight() - margin * 2) を書いたところ Thread1:EXC_INSTRUCTION(code=-------) というエラーが出てきて困ってますー_ー
_Kentarou

2016/03/30 15:42

エラーから推測する原因の一つを回答載せました。 ご確認ください。
sweden1

2016/03/31 00:16

助かります。 ありがとうございます
sweden1

2016/03/31 15:49

コードはこのような感じになってます mport UIKit class ViewController: UIViewController { let margin: CGFloat = 50 @IBOutlet weak var customView: UIView! override func viewDidLoad() { super.viewDidLoad() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() customView.frame = CGRectMake(margin,margin,UIScreenUtil.screenWidth() - margin*2,UIScreenUtil.screenWidth() - margin*2) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } struct UIScreenUtil { static func bounds()-> CGRect{return UIScreen.mainScreen().bounds;} static func screenWidth() -> CGFloat {return UIScreen.mainScreen().bounds.size.width;} static func screenHeight() -> CGFloat{return UIScreen.mainScreen().bounds.size.height;} }
sweden1

2016/03/31 15:52

そういえば、ViewではなくButtonでした
_Kentarou

2016/03/31 15:59

コードを再度載せられていますが、なにか解決していないということですか?
sweden1

2016/04/01 04:32

Customviewとviewを結ぼうと思っても、outlet actionなどが出てきてコードを書くようになってします
_Kentarou

2016/04/01 04:48

Storyboardからではなくて、 @IBOutlet weak var customView: UIView! の左に○のマークがあるのでそこから、Storyboardに結んで下さい。 結ばれると⚫️のようにマークが変わります。
sweden1

2016/04/01 06:39 編集

一画面にある複数のview,bottunのサイズをそれぞれのデバイス(iPhone)対応させ、それらを一列に並べるにはどうしたらよろしいのでしょう?
sweden1

2016/04/03 06:30

一画面にある複数のview,bottunのサイズをそれぞれのデバイス(iPhone)対応させ、それらを一列に並べるにはどうしたらよろしいのでしょう?
sweden1

2016/04/04 04:20

et margin1: CGFloat = 50だと 上下左右の幅50と均等になるが、上幅50 横幅(左右)50 下幅を100(例)としたい時は同夜したら下幅だけいじることができますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問