0

UIViewに多くのUiImageViewがあり、IpadまたはiPhoneの座標に基づいて異なる方法で作成/配置します。これらのUIImageViewのフレームを作成するための現在のロジックは次のとおりです

- (void)setAnimationFrame:(NSString *)imageName iPadFrameX:(int)iPadX iPadFrameY:(int)iPadY iPhoneFrameX:(int)iPhoneX iPhoneFrameY:(int)iPhoneY imageSizePercentForiPad:(CGFloat)imageSizePercentForiPad imageSizePercentForiPhone:(CGFloat)imageSizePercentForiPhone  animationNumber:(int)animationNumber imageAnimationView:(UIImageView *)imageAnimationView{

    int tagNumber;
    tagNumber = [self getTagNumber:animationNumber];
    UIImage *image = [UIImage imageNamed:imageName];
    CGRect frame;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        frame = CGRectMake(iPadX, iPadY, image.size.width*imageSizePercentForiPad, image.size.height*imageSizePercentForiPad);
    }
    else
    {
        frame = CGRectMake(iPhoneX, iPhoneY, image.size.width*imageSizePercentForiPhone, image.size.height*imageSizePercentForiPhone);
    }

    imageAnimationView.frame = frame;
    imageAnimationView.image = image;
    imageAnimationView.tag = tagNumber;

}

アプリ全体で画像の配列をUIImageView.animationImagesに渡すことで、多くのUIImageViewアニメーションを実行します。では、iPhone 5と互換性のあるこのようなシナリオを処理するための最良の方法は何ですか?

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)座標を計算してiPhone5を処理するために、もう1つ条件を追加しますか、それとももっと良い方法がありますか。どうぞよろしくお願いいたします。

4

1 に答える 1

1

ここには2つのオプションがあります。

オプション1:

elseステートメント内にiPhone5の条件ステートメントを追加します

else {
    if ([[UIScreen mainScreen] bounds].size.height == 568) {
        // set the frame specific for iPhone 5
    } else {
        frame = CGRectMake(iPhoneX, iPhoneY, image.size.width*imageSizePercentForiPhone, image.size.height*imageSizePercentForiPhone);
    }
}

オプション2:

自動レイアウトを使用します。ここで自動レイアウトを開始できます:
http ://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2
http://www.raywenderlich.com/20897/beginning-auto -layout-part-2-of-2

于 2012-09-25T09:01:57.980 に答える