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

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

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

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

Q&A

解決済

2回答

3161閲覧

scrollviewの中にtextviewとimageviewを並べる

meia

総合スコア26

Swift

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

0グッド

1クリップ

投稿2016/12/28 01:36

編集2016/12/28 02:14

###前提・実現したいこと

swift3.0
xcode8.21 で作業しています

スクロールビューの中にテキストビューとイメージビューを何個か並べて、スクロールビューをその2つの大きさによって、スクロールできるようにするのが目標です

テキストビューの高さはviewcontrollerで指定した内容によって、変化するようにしていて、イメージビューをそのテキストビューのから一定距離のところに配置したいです

できればAutolayoutで編集する方法を知りたいのですが、自分で調べてみて今はコードで動かす方法しかないのかなー、と考えています

イメージ説明

###該当のソースコード

override func viewDidLoad() { imgview.translatesAutoresizingMaskIntoConstraints = false } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() // ここもいつか可変長にしたいです myscroll.contentSize.height = 1000 // テキストビューの大きさを文字の量に合わせる testtext.sizeToFit() // 「//」を外すと画像自体が消えてしまいました // imgview.removeConstraints(imgview.constraints) myscroll.addConstraints([ NSLayoutConstraint(item: imgview, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: testtext, attribute: NSLayoutAttribute.bottom, multiplier: 1.0, constant:5 ) ]) }

###試したこと

上記の方法とは別にこのリンク先の内容も試したのですが、テキストビューごと消えました。。。
参考先2
###補足情報(言語/FW/ツール等のバージョンなど)
ちなみにこのままだとautolayoutに従って、テキストにかぶって画像が表示されています

もし足りない情報があれば、教えていただけたら助かります
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

テキストビューの高さはviewcontrollerで指定した内容によって、変化するようにしていて、イメージビューをそのテキストビューのから一定距離のところに配置したいです

2オブジェクト間の距離は一定にということであれば、
imageview上からTexttest上へcontrolキーを押しながらドラッグすると、どのプロパティに対してconstraintを張るかを指定できますが、いかがでしょう。

投稿2016/12/28 10:11

kensii

総合スコア191

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

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

meia

2016/12/28 11:17

回答ありがとうございます!こんな便利な方法があるとは知りませんでした! おっしゃっていただた通りに試してみたのですが、画像の位置は移動したのですが、やはりテキストビューにイメージビューがかぶってしまいました… testtext.sizeToFit()がviewDidLayoutSubviews()にあるのが原因かと思って、viewWillAppearの方に入れてみたのですが、そうすると今度はテキストビューが小さいままになってしまいました 続けて質問して申し訳ないのですが、何かいい方法はありますでしょうか?
kensii

2016/12/28 12:16

imageviewはTesttextのどのプロパティに対してconstraintを付けましたでしょうか。 あとは予想になりますが、 記述したconstraintに関するコードを消してMyscroll>Viewに対してTesttextのconstraintをつけなおしてみるとどうなるかあたりでしょうか。 http://blog.asobicocoro.com/entry/2016/07/01/000419
meia

2016/12/28 13:11

vertical spacingというものを使いました! myscroll.addconstraints〜コードを消してみても相変わらずですね… autolayoutの使い方が悪いんでしょうか…
guest

0

ベストアンサー

スクロールビューはあまり関係ない話ですね。
動的に変化するけど初期状態をストボーで設計したいというのであれば、制約をコードとアウトレット接続するのが良いと思います。その際、TextViewのHeightの変更であればframeプロパティを操作するのでなく、高さの制約を操作するようにすれば下の部品もマージンを維持しつつ移動します。

buttonを押すとテキストビューの高さが変わり、伴ってラベルが動くサンプルです。画像の用意が面倒なのでラベルでやってます。ラベルのY座標をTextViewに依存するようにPinで上マージンを設定してください。
イメージ説明

追記

sizeToFit()で高さを取る場合はこうなります

swift

1 textView.text = 内容 2 textView.sizeToFit() 3 textViewHeightConstraint.constant = textView.frame.height

投稿2016/12/28 13:19

編集2016/12/28 17:58
fromageblanc

総合スコア2724

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

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

meia

2016/12/29 11:55

詳しく教えていただいてありがとうございます! kensiiさんの方法だけでできなかったのは、constraintsの競合?もあったせいみたいです。 お2人のおかげで、思い描いていたものと同じようにできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問