- 締切済み
xcodeでviewに読み込んだ画像を拡大したい
現在xcodeで作成しているiphoneアプリのプログラムで、storyboardに配置したViewControllerに画像を配置したのですが、配置したらサイズが少し小さいので、画像の右下隅の方をクリックして拡大するため引き伸ばしてみたのですが、画像自体が大きくなりません。 シミュレーターで動作確認してみても、この画像は大きくはなっていません。 この画像を拡大して表示する方法などご教示頂きますよう、宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Lchan0211b
- ベストアンサー率61% (573/930)
ダウンロードして内容を見たところ、画像ファイル(img_iccard.png)が含まれておらず、問題の画像のサイズがわかりませんでしたが、適当に400x400くらいの画像を替わりに設定して確認してみました。 結論としては2点問題があると思います。 まず、ビューの配置状況をわかりやすくするために、問題の画像を割り当てているUIImageViewと「カードをタッチしてください」というメッセージが入っているUILabelの両方の背景色(Background)を透明以外に設定して実行してみてください。すると、UIImageViewの方の高さは変わらず、「カードをタッチしてください」の方のラベルの高さが大きく広がっていることがわかると思います。 次に、 http://dev.classmethod.jp/references/xcode-5-auto-layout-5/ の「制約のバリデーション」の説明の最初の図にあるように、赤丸に白抜きの右矢印のマークが「openingView Scene」の横に出ていると思いますので、それをクリックしてください。 すると「Content Priority Ambiguity」のエラーメッセージがいくつか出ていると思います。このエラーはどういうことかというと、「画面上端とUIImageViewの間隔」、「UIImageViewとUILabelの間隔」、「UILabelと画面下端の間隔」の3つは指定されているのに、UIImageViewやUILabelの高さの指定がないので、実際の画面サイズに合うようにするために、どちらの高さを広げて調整すべきかPriority設定で判断したいのに「vertical compression resistance priority」の値がUIImageViewもUILabelもどちらも同じ値(750)なので、どちらを優先したらよいかわからず曖昧だというエラーです。 この場合、とりあえずUIImageViewは実際の画像の高さと同じになるようにし、UILabelの高さの方を画面サイズに合わせて広げて表示するようです。このため、いくらStoryboardでUIImageViewのサイズを広げても意味がなかったということです。 これを修正するために、「Content Priority Ambiguity」の横の赤丸(白抜き)マークをクリックしてください。すると、「Decrease vertical compression resistance of "img_iccard.png" from 750 to 749 to make it get clipped before other views.」というメッセージととともに「Change Priority」というボタンが出ると思いますので、それをクリックしてください。 そうすると、UIImageViewのvertical compression resistance priority」の優先度が750から749に落ちますので、UILableの高さの方が固定され、UIImageVIewの高さの方が画面サイズに合うように広がるようになります。 これが1点目の問題の修正です。 これを修正して実行すると、UILabelの高さは広がらず、UIImageViewの高さが余った画面全体に広がるようになると思います。しかし、画像自体は全体に広がらず、UIImageViewの中心に小さく表示されているのではないかと思います。これは、現在のUIImageViewの画像表示モードが「Center」に設定されているためです。 StoryboardでUIImageViewの設定項目のModeを「Center」から「Aspect Fit」(または「Scale To Fill」)に修正すれば、UIImageViewの表示エリア全体に画像を広げて表示できると思います。 これが2点目の問題の修正です。 他の画面でもAutolayoutの制約設定誤りがたくさんあるようなので、ちゃんとAutolayoutについて勉強してからやらないと、自分の思ったようにレイアウトするのは難しいと思います。
- Lchan0211b
- ベストアンサー率61% (573/930)
> 他に確認した方が良い点などご教示宜しくお願い致します。 情報が少なすぎてそれ以上コメントできません。 前回の質問のように問題のプロジェクトをGitHubにアップロードしてもらうことができるなら、どの画面で質問のような現象が起きるのか説明してもらって、それに対して何かコメントできるかもしれません。
- Lchan0211b
- ベストアンサー率61% (573/930)
Autolayoutを使っているのでしたら、入門書等を読んでAutolayoutを勉強してください。 Autolayoutを使っている時はConstraints(制約)に従ってビューを配置しますので、Storyboardでビューの右下をドラッグしてサイズを変更しても、それに合わせてConstraintsを更新しなければ実際に表示されるビューのサイズは変わりません。 ちょっと古いXcodeの記事ですが、 http://dev.classmethod.jp/references/xcode-5-auto-layout-4/ の「Frame を制約に合わせて変更する」の最初の図に表示されているメニューを見てください。 ここで説明されているのは「Update Frames」の方ですが、その下に「Update Constraints」というのがあります。 ビューの右下をドラッグしてサイズを更新したら、その「Update Constraints」をやれば、現在のビューのサイズに合わせてConstraintsが更新されますので、実際に表示されるサイズも変わると思います。
お礼
回答頂きありがとうございます。 参考記事も紹介頂きありがとうございます。 画像のリサイズ時に”Update Constraints”を探して、あったので、それをクリックして有効にしてみたのですが、png画像の大きさは変更できませんでした。 シミュレーション時でも画像はリサイズされていませんでした。 他に確認した方が良い点などご教示宜しくお願い致します。
お礼
回答頂きありがとうございます。 現在作業しているXcodeのプロジェクトはこちらです。 https://github.com/KenjiMaehara/ios_apply_test/tree/20150720_test/proxyView20160510/proxyView20160510 こちらのプロジェクトのstoryboardの一番最初のViewcontrollerに表示している画像をリサイズしたいと思っています。