以下の様にメソッドが実行されるとボタンがScrollViewに表示される様なプログラムを作ったのですが、とりあえずiPhone8の画面の大きさを想定して作っていたため、他のデバイスだとややズレが生じます。その様な場合どうすれば良いでしょうか?
Swift
1Button_num += 1 2 if Button_num % 2 == 0{ 3 4 Button_num_row += 1 5 6 }else{ 7 Button_num_row = 0 8 Button_num_col += 1 9 } 10btn.frame = CGRect(x:CGFloat(55+Button_num_row*150), y:CGFloat((Button_num_col*100)-70),width:100, height:50) 11 12 13/*******省略************/ 14 15scrview.addSubview(btn)
これで画面に二列でボタンを配置していっています。
これをオートレイアウトしてどのデバイスでもズレがない様にしたいです。その場合どの様に書けば良いでしょうか?
TinyConstraintsというライブラリで簡単にオートレイアウトが出来るよですが、この様な場合もこれを使ってできたりするのでしょうか?因みにScrollViewに関しては以下の様にTinyConstraintsを使って画面に合わせたレイアウトをする事ができました。
Swift
1scrview.edgesToSuperview(insets: TinyEdgeInsets(top: 70, left: 0, bottom: 0, right: 0))
それ以外の方法で、普通にかける場合はそれでもいいのですが、画面に合わせてボタンの配置を行いたいです。
・・・・追記・・・・・・・・・・・・・
因みに以下の様な形で試して見ました。
Swift
1scrview.addSubview(btn) 2 3 if Button_num % 2 == 0{ 4 5 Button_num_row += 1 6 7 }else{ 8 Button_num_row = 0 9 Button_num_col += 1 10 } 11 12 if Button_num % 2 != 0{ 13 14 btn.edges(to: scrview, insets: TinyEdgeInsets(top: CGFloat((Button_num_col*100)-70), left: 50, bottom:CGFloat((Button_num_col*100)-20) , right:200 )) 15 16 17 }else{ 18 btn.edges(to: scrview, insets: TinyEdgeInsets(top: CGFloat((Button_num_col*100)-70), left: 200, bottom:CGFloat((Button_num_col*100)-20) , right:10)) 19 }
しかしこれで2個ボタンを配置した際に1つだけボタンを配置した際には置きたい位置に置けているのに、2つ目を置いた際に1つ目のボタンが右に伸びてしまいます。
イメージとしてはbtnの位置がその親であるscrviewに対してTinyEdgeInsetsで指定した幅それぞれがマージンをとる様なものだと思ったのですが、何故subviewであるお互いが干渉するのでしょうか?
また、このtopやleftというのは、topならボタンの上のエッジが親のview(今回ならscrview)の上のエッジに対してどれくらいにくるか、leftならボタンの左のエッジが親のviewの左のエッジに対してどのいちにくるかという様なことではないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/12 07:52