我正在开发一款应用。在应用程序中,我编写了3.5英寸屏幕的代码。我拿了一个视图控制器;在这个视图控制器中,我想显示两个图像,一个用于顶部(Imagelogo),另一个用于底部(图像构建)。在3.5英寸的屏幕上,显示器没有问题。但在4英寸屏幕上,存在显示问题。这两个图像无法正确显示。我不知道如何为3.5英寸和4英寸屏幕编写相同的代码。我可以使用宏吗?任何人都请给我一些想法。我是编程新手。提前谢谢。
以下是我的代码。
Viewcontroller.m(3.5英寸屏幕)
此图像将显示在顶部。
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
此图片将显示在底部
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
答案 0 :(得分:1)
您可以在界面构建器中使用autoResize功能,也可以通过代码使用它。
如果您的应用支持IOS 5及更高版本,您可以使用Apple的自动布局系统。
您可以通过代码
根据屏幕尺寸放置图像if ([[UIScreen mainScreen] bounds].size.height == 568)
{
//iphone 5 image
}else
{
}
答案 1 :(得分:1)
在“Viewcontroller.h”中定义float scaleY;
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
float scaleY;
}
@end
在“Viewcontroller.m”类中
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)])
{
CGSize result = [[UIScreen mainScreen] bounds].size;
CGFloat scale = [UIScreen mainScreen].scale;
result = CGSizeMake(result.width * scale, result.height * scale);
NSLog(@"Height ........%f",result.height);
if(result.height == 480 || result.height == 960)
{
// iPhone 3.5 inches Screen
scaleY=1.0;
}
else if(result.height == 1136)
{
// iPhone 4 inches Screen
scaleY=1.18333f;
}
}
}
然后将scaleY值与视图的“y”位置相乘。
UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10*scaleY, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
UIImageView *imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320*scaleY, 320, 140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
您可以在整个代码中使用此“scaleY”值(如上所示)将其与相应视图的y位置相乘。由于iPhone家庭设备的高度不同,所以我们只能改变他们的“y”位置。
希望这有帮助。
答案 2 :(得分:0)
只需尝试使用autoresizingmask。
UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[imgLogo setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin)];
[self.view addSubview:imgLogo];
答案 3 :(得分:0)
这是您的问题的快速解决方案,但我建议使用自动布局。
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 420,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
}
else
{
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
}
希望这会帮助你。