0

我很抱歉我的英语。

在我尝试在第一个视图中开发的应用程序中,我有一组 4 张图像、一个横幅和一个标签栏,我想完全覆盖屏幕尺寸。3.5 英寸 iPhone 没有问题,但问题始于 4 英寸 iPhone。目前我正在使用自动布局,并且每个图像都对顶部超级视图有限制,但我认为这不是解决我的问题的最佳解决方案,事实上这会导致 iphone 4 英寸中的图像和标签栏之间出现白色透明空间意见。

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

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

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

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

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

4

2 回答 2

0

我认为最好为 3.5 和 4 英寸显示器提供两个单独的 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 英寸笔尖名称命名为 LoginViewController-568h.xib 即添加 -568h 后缀。每次使用这个 pushViewController 方法来推送一个新的视图控制器。您可以在基本视图控制器中编写此方法。

于 2013-05-01T06:48:01.883 回答
0

我会为你的麦克风示例使用 2 组图像,只是因为如果你想在选项卡和麦克风之间有这个空白,这是要走的路。

您可以通过检查代码中的 iPhone 型号并加载相应的图像来实现这一点。

如果您的磁盘空间不足(不能有多个 iPhone 型号图像),那么 resize 方法可以做到。

于 2013-04-27T10:48:35.420 回答