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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

266閲覧

AutolayoutをStoryboardで組むとviewが表示されなくなってしまう問題について

swifty

総合スコア38

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2019/10/17 12:50

編集2019/10/17 12:52

実現したいこと

StoryboardでAutolayoutを組んだオリジナルの Alert View が表示されるようにしたいです。
Autolayoutを組まなければ完璧に表示できるのですがAutolayoutを組むと何も表示されなくなってしまいます。
どのようにすれば表示できますでしょうか?

AutoLayoutを全てコードで書くという方法があると思うのですが、今までstoryboardで書かれているプロジェクトなのでそちらに統一する必要がある状況で困っております。皆様のお力添えいただけますと幸いです。

ソースコード

swift

1import Foundation 2import UIKit 3 4class CustomAlertView: UIView { 5 6 @IBOutlet private weak var alertText: UILabel! 7 @IBOutlet private weak var cancelButton: UIButton! 8 @IBOutlet private weak var startButton: UIButton! 9 @IBOutlet private weak var scheduleButton: UIButton! 10 @IBOutlet private weak var containerView: UIView! 11 12 func loadNib() { 13 let view = Bundle.main.loadNibNamed("CustomAlertView", owner: self, options: nil)?.first as! UIView 14 15 containerView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) 16 alertText.backgroundColor = UIColor(red: 255/255, green: 165/255, blue: 148/255, alpha: 1) 17 18 view.frame = self.bounds 19 self.addSubview(view) 20 21 } 22}

以下のViewControllerのbuttonPressedが作動されたらCustome Alert Viewが表示されるよう実装しています。

Swift

1@IBAction private func buttonPressed(_ sender: Any) { 2 3 //CustomViewを出す 4 let customAlertView = CustomAlertView() 5 view.isUserInteractionEnabled = false 6 view.addSubview(customAlertView) 7 8}

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

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

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

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

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

guest

回答2

0

自己解決

こちらの問題ですが、外部フレームワークSnapKitを使って各viewの生成から全てコードで記述する方向性で進めることになり、その方向で実装したところ解決できました。

皆さまお力添えありがとうございました。

投稿2019/10/18 07:23

swifty

総合スコア38

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

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

0

部分部分なので何とも言えませんがビューデバッガで表示したらどうなってますか?
自前でaddSubViewする限り、Storyboardだけでは何ともならないところがあります。
translatesAutoresizingMaskIntoConstraintsをtrueにしてAutoresizingに頼るか、translates~をfalseにして自分でConstraintを追加するかが必要になりますどちらにしてますか?

投稿2019/10/17 15:22

toki_td

総合スコア2850

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

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

swifty

2019/10/18 01:00

ご回答ありがとうございます。 ビューデバッガでヒエラルキーを確認しても何も表示されていない状態です。 普段はtranslatesAutoresizingMaskIntoConstraints = falseにしてコードでAutolayoutも書いてしまうんですが.. translatesAutoresizingMaskIntoConstraints = falseを書いてみたりしたのですがうまくいきませんでした。そもそも今回のケースの場合はstoryboardで書いてるからtranslatesAutoresizingMaskIntoConstraints = falseも意味ないんだろうなとは思いつつ。 やはりstoryboardで書くのを捨てて全てコードで書くしかないのですかね?ただ今まで開発していた人たちがstoryboardでAutolayoutを書いてるパーツが他にもあってうまく表示されているので何か方法があるのではないかと思っているんですよね。 仕組みとしてはシンプルで今動いてるアプリにCustomeAlertViewをaddSubViewで出して表示したいだけなのですが、viewが表示されないという..
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問