如何将图像从iphone 4动态更改为iphone 5屏幕

时间:2013-04-27 10:08:09

标签: view resize uiimage iphone-5 iphone-4

对不起我的英语。

在我试图在第一个视图中开发的应用程序中,我有一组4个图像,一个横幅和一个标签栏,我想完全覆盖屏幕尺寸。对于3.5英寸的iPhone来说没有问题,但问题始于4英寸iPhone。目前我正在使用自动布局,每个图像都有一个限制到顶级超级视图,但我想这不是解决我的问题的最佳解决方案,实际上导致图像和标签栏之间的白色清晰空间在iPhone 4英寸视图。

要解决此问题,您认为哪种解决方案最好?是否可以拉伸图像并调整大小以完全覆盖屏幕?或者最好根据设备屏幕尺寸加载两组不同的图像?

我的另一个想法是使用尺寸合适的4英寸iphone图像,当在3.5英寸的iphone中显示时,部分覆盖在此示例的底部:

http://www.manuelragazzini.it/microfoni.jpg

下面我发布一个我的情况示例以及我想要的结果(在3.5英寸中还有一个导航栏,但是以编程方式隐藏,因此视图非常完美)

http://www.manuelragazzini.it/domanda.jpg

2 个答案:

答案 0 :(得分:0)

我为你的麦克风示例提供了2套图像,只是因为如果你想在标签和麦克风之间有这样的空白,那就是你要走的路。

您可以通过检查代码中的iPhone模型来实现此目的,从而加载相应的图像。

如果你的磁盘空间不足(不能有多个iPhone模型图像),那么调整大小的方法就可以做到。

答案 1 :(得分:0)

我认为为3.5英寸和4英寸显示器提供两个单独的nib文件会更好。是的我知道这会增加你的努力,但是代码将来会更容易管理。你只需要提供单独的笔尖。

您可以使用以下方法每次为所需尺寸动态加载nib。

-(void)pushViewController:(UIViewController*)viewController withNib:(NSString*)nibName
{


 if(nibName){

    nibName=[self getNibNameForNib:nibName];

    viewController=[viewController initWithNibName:nibName bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
}

}


-(NSString*)getNibNameForNib:(NSString *)nibName
{
NSString *newNibName=nil;

if([self isIphone5Retina4InchDisplay]){
    newNibName=[nibName stringByAppendingString:@"-568h"];
}

if(newNibName && [[NSBundle mainBundle] pathForResource:newNibName ofType:@"nib"] != nil)
{
    //if iphone 5 and nib is also present for that resolution.
    nibName=newNibName;
}

return nibName;
}

/**
 Method to get if device is 4 inch iphone 5 retina device or not.
 */
-(BOOL)isIphone5Retina4InchDisplay
{   

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
    return YES;
} else {
    // code for 3.5-inch screen
    return NO;
  }
}

只需将RETINA 4英寸NIB名称命名为LoginViewController-568h.xib即添加-568h后缀。用这个 pushViewController方法每次都推送一个新的视图控制器。您可以在Base视图控制器中编写此方法。