0

アプリを開発しています。アプリでは、3.5 インチ画面用のコードを書きました。ビューコントローラーを1つ取りました。このView Controllerでは、上部(Imagelogo)と下部(Image Building)の2つの画像を表示したいと考えています。3.5インチ画面では表示に問題はありません。しかし、4 インチの画面では、表示の問題があります。2 つの画像が正しく表示されません。3.5 インチと 4 インチの両方の画面で同じコードを記述する方法がわかりません。マクロは使えますか?どなたか、アイデアをください。私はプログラミングが初めてです。前もって感謝します。

以下は私のコードです。

Viewcontroller.m (3.5 インチ画面)

この画像が一番上に表示されます。

imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];

この画像は一番下に表示されます

imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
4

4 に答える 4

1

"Viewcontroller.h" で float scaleY; を定義します。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
   float scaleY;
}
@end

「Viewcontroller.m」クラスで

[super viewDidLoad] の後の viewDidLoad メソッドで。iPhone ファミリのさまざまな画面サイズのデバイスに scaleY 値を入力します。

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)])
    {
        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width * scale, result.height * scale);
        NSLog(@"Height ........%f",result.height);

        if(result.height == 480 || result.height == 960)
        {
            // iPhone 3.5 inches Screen
            scaleY=1.0;

        }
        else if(result.height == 1136)
        {
            // iPhone 4 inches Screen
            scaleY=1.18333f;

        }
    }
}

次に、scaleY 値にビューの「y」位置を掛けます。

UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10*scaleY, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];

UIImageView *imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320*scaleY, 320, 140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];

コード全体でこの "scaleY" 値 (上に示すように) を使用して、対応するビューの y 位置を掛けることができます。iPhone ファミリ デバイスは高さが異なるため、「y」位置のみを変更できます。

お役に立てれば。

于 2013-11-09T17:38:07.383 に答える
1

インターフェイスビルダーの autoResize 機能を使用するか、コードを介して使用できます。

アプリが IOS 5 以降をサポートしている場合は、Apple の自動レイアウト システムを使用できます。

コードを介して画面サイズに応じて画像を配置できます

if ([[UIScreen mainScreen] bounds].size.height == 568)
{
       //iphone 5 image 
}else
{

}
于 2013-11-08T06:33:55.520 に答える
0

これは問題の簡単な修正ですが、自動レイアウトを使用することをお勧めします。

 if ([[UIScreen mainScreen] bounds].size.height == 568)
    {    
         imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
       imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
       [self.view addSubview:imgLogo]; 
       imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 420,140 )];
       imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
       [self.view addSubview:imgBuilding];            
    }
    else
    {
       imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
       imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
       [self.view addSubview:imgLogo]; 
       imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
       imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
       [self.view addSubview:imgBuilding];     
    }

これがあなたを助けることを願っています。

于 2013-11-08T06:40:23.260 に答える
0

このように autoresizingmask を試してみてください。

 UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];


    imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
    [imgLogo setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin)];

    [self.view addSubview:imgLogo];
于 2013-11-08T06:36:15.890 に答える