2016-08-16 9 views
0

iPhoneとiPad向けのアプリを作成しています。そして今私は別の電話の画面でUIImageViewのサイズを取得したいと思います。私は上記のコードで試してみましたUIImageViewのサイズをプログラムで取得する

print("width \(BubbleBackground.frame.size.width)") 
print("height \(BubbleBackground.frame.size.height)") 
print("width1 \(BubbleBackground.bounds.size.width)") 
print("height1 \(BubbleBackground.bounds.size.height)") 
print("width2\(BubbleBackground.image!.size.width)") 
print("height2\(BubbleBackground.image!.size.height)") 

、まだ彼らは私に一定の値に関係なく、それはiPhone 5、iPhone 6、iPhone 6プラスやiPadで実行されているを返します。私は、次のコードで試してみました。どのデバイスが異なるデバイスで動作しているときに、どのようにイメージサイズを取得できるのでしょうか?

+0

あなたの属性に固定高さを設定している可能性があります –

+0

このコードはどこに置いてありますか? 'viewDidLoad'の場合、まだレイアウトが開始されていないので正しくないかもしれない – Tj3n

+0

Nop、それはアスペクト比です。画像はiPad上ではより大きな解像度にリサイズされ、iPhoneでは小さい解像度に変更されます –

答えて

1

あなたは、画面サイズに応じてImageViewのフレームを変更するには、いくつかの制約を持っている必要があります。その後、UIImageView(BubbleBackground.layoutIfNeeded())の.layoutIfNeeded()を使用してランタイムサイズを取得できます。

viewWillAppearまたはviewDidLayoutSubviewsで、またはこれらのイベントの後にいつでもこれを行うようにしてください。

+0

そう、私はviewDidLoad()にそれらを入れてはいけないと分かっています。 –

1

イメージに現在の画面サイズに合わせてサイズを変更する制約を設定していない限り、イメージはすべてのデバイスで同じサイズになります。

制約はXcodeのInterface Builderを使用して最も頻繁に追加されますが、プログラムで追加することもできます。 Interface Builderの https://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html#//apple_ref/doc/uid/TP40010853-CH10-SW1

追加制約を使用して

追加の制約はプログラムによるhttps://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html

関連する問題