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

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

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

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

Q&A

0回答

548閲覧

swift Autolayout のサイズについて

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2021/03/01 03:41

swift

1import UIKit 2 3class ViewController: UIViewController { 4 var answer:Int? 5 var questionView = UITextView() 6 var buttonList:[UIButton] = [] 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view. 11 12 answer = 0 13 questionView = setUpquestion(contents: "こんにちはわわわわわわ") 14 let c = setUpChoices(c1: "押してね!",c2: "押してね!!") 15 buttonList.append(c.0) 16 buttonList.append(c.1) 17 } 18 func setUpquestion(contents:String) -> UITextView{ 19 let question = UITextView() 20 question.isEditable = false 21 question.translatesAutoresizingMaskIntoConstraints = false 22 question.isSelectable = false 23 question.font = UIFont.systemFont(ofSize: 23) 24 question.textColor = .lightGray 25 question.text = contents 26 question.sizeToFit() 27 question.center = self.view.center 28 self.view.addSubview(question) 29 30 question.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true 31 question.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true 32 33 34 return question 35 } 36 func modQuestion(view:UITextView,contents:String){ 37 view.text = contents 38 } 39 func setUpChoices(c1:String,c2:String) -> (UIButton,UIButton){ 40 let button1 = UIButton() 41 button1.setTitle(c1, for: .normal) 42 button1.sizeToFit() 43 button1.setTitleColor(.systemBlue, for: .normal) 44 button1.center = CGPoint(x: self.view.bounds.width / 4, y: self.view.bounds.height * 3 / 4) 45 button1.tag = 0 46 button1.addTarget(self, action: #selector(buttonAction(_:)), for: .touchUpInside) 47 self.view.addSubview(button1) 48 49 let button2 = UIButton() 50 button2.setTitle(c2, for: .normal) 51 button2.sizeToFit() 52 button2.setTitleColor(.systemBlue, for: .normal) 53 button2.center = CGPoint(x: self.view.bounds.width * 3 / 4, y: self.view.bounds.height * 3 / 4) 54 button2.tag = 1 55 button2.addTarget(self, action: #selector(buttonAction(_:)), for: .touchUpInside) 56 self.view.addSubview(button2) 57 58 return (button1,button2) 59 } 60 61 func modButton(button:UIButton,str:String){ 62 button.isEnabled = true 63 button.setTitle(str, for: .normal) 64 65 } 66 67 @objc func buttonAction(_ sender:UIButton){ 68 if let ans = answer{ 69 if sender.tag == ans{ 70 print("正解") 71 }else{ 72 print("不正解") 73 } 74 } 75 buttonList[0].isEnabled = false 76 buttonList[1].isEnabled = false 77 78 DispatchQueue.main.asyncAfter(deadline: .now() + 3){ 79 self.modQuestion(view: self.questionView, contents: "こんにちは") 80 self.modButton(button: self.buttonList[0], str: "Push1") 81 self.modButton(button: self.buttonList[1], str: "Push2") 82 83 84 } 85 86 } 87 88} 89

これの場合なぜ一番最初の"こんにちはわわわわわわ"のいちは真ん中にあるのに、後から変更した"こんにちは"では位置が真ん中に引き継がれないのでしょうか?これを解決するためにAutolayoutを設定しようと思ったんですけど、xとyは設定できたんですけど、sizeToFit()のように文字の大きなどによって変えることのできるAutolayoutはあるのでしょうか?question.widthAnchor.constraint(equalTo: 50)このような具体的な値などで設定するしかないのでしょうか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問