我在UIView上有很多UiImageViews,我根据Ipad或iPhone坐标创建/放置它们。这是我为这些UIImageViews创建框架的当前逻辑
- (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)
内添加了一个其他条件来通过计算其坐标来处理iPhone 5,或者有更好的方法。我非常感谢你的建议。
答案 0 :(得分:1)
这里有2个选项:
选项1:
在您的else语句
中添加iPhone 5的条件语句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