对不起我的英语。
在我试图在第一个视图中开发的应用程序中,我有一组4个图像,一个横幅和一个标签栏,我想完全覆盖屏幕尺寸。对于3.5英寸的iPhone来说没有问题,但问题始于4英寸iPhone。目前我正在使用自动布局,每个图像都有一个限制到顶级超级视图,但我想这不是解决我的问题的最佳解决方案,实际上导致图像和标签栏之间的白色清晰空间在iPhone 4英寸视图。
要解决此问题,您认为哪种解决方案最好?是否可以拉伸图像并调整大小以完全覆盖屏幕?或者最好根据设备屏幕尺寸加载两组不同的图像?
我的另一个想法是使用尺寸合适的4英寸iphone图像,当在3.5英寸的iphone中显示时,部分覆盖在此示例的底部:
http://www.manuelragazzini.it/microfoni.jpg
下面我发布一个我的情况示例以及我想要的结果(在3.5英寸中还有一个导航栏,但是以编程方式隐藏,因此视图非常完美)
答案 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视图控制器中编写此方法。