すべての iOS デバイス用に次のコードを作成しました。画面サイズを検出し、各デバイスのサイズに適した画像を使用します。これは機能しますが、理想とはほど遠いものです。画像ごとに、5 つの異なるサイズに保存する必要があります。これを行うためのより良い方法は何ですか? 基本的に背景(繰り返し)、中央に小さなアイコン、テキストが必要です。40 以上の画像を使用する代わりに、正しいサイズのフォントでテキストを作成し、別の画像ビュー サイズを使用することはできますか? これが私がすべき方法である場合...背景画像を引き伸ばして歪ませずに、背景画像ビューを画面の端に流すにはどうすればよいですか? より良いオプションはありますか?
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *beginIntro = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[beginIntro addTarget:self
action:@selector(begin:)
forControlEvents:UIControlEventTouchDown];
[beginIntro setTitle:@"Begin Intro" forState:UIControlStateNormal];
beginIntro.frame = CGRectMake(80.0, 310.0, 160.0, 40.0);
[[self view] addSubview:beginIntro];
UIButton *reset = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[beginIntro addTarget:self
action:@selector(reset:)
forControlEvents:UIControlEventTouchDown];
[reset setTitle:@"Reset Intro" forState:UIControlStateNormal];
reset.frame = CGRectMake(80.0, 410.0, 160.0, 40.0);
[[self view] addSubview:reset];
_SlideImageView = [[UIImageView alloc]initWithFrame:CGRectMake([[UIScreen mainScreen]bounds].origin.x, [[UIScreen mainScreen]bounds].origin.y, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height)];
[[self view]addSubview:_SlideImageView];
[self setSlideNumber:[NSNumber numberWithInt:1]];
}
-(IBAction)begin:(id)sender{
if ([_SlideNumber intValue] <=8) {
UIImage * toImage = [UIImage imageNamed:[self getSlideShowImageName]];
[UIView transitionWithView:self.view
duration:5.0f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.SlideImageView.image = toImage;
} completion:^(BOOL finished) {
sleep(2);
[self begin:nil];
}];
int SlideNumber = [_SlideNumber intValue];
int NewSlideNumber = SlideNumber+=1;
[self setSlideNumber:[NSNumber numberWithInt:NewSlideNumber]];
}
}
-(NSString*)getSlideShowImageName{
NSString * slideShowImageName = [NSString stringWithFormat:@""];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
CGFloat scale = [[UIScreen mainScreen] scale];
if (scale > 1.0)
{
//iPad retina screen
slideShowImageName = [NSString stringWithFormat:@"ipad%d@2x.png",[_SlideNumber intValue]];
}
else
{
//iPad screen
slideShowImageName = [NSString stringWithFormat:@"ipad%d.png",[_SlideNumber intValue]];
}
}
else
{
if ([UIScreen instancesRespondToSelector:@selector(scale)])
{
CGFloat scale = [[UIScreen mainScreen] scale];
if (scale > 1.0)
{
if([[ UIScreen mainScreen ] bounds ].size.height == 568)
{
//iphone 5
slideShowImageName = [NSString stringWithFormat:@"iphone5%d.png",[_SlideNumber intValue]];
}
else
{
//iphone retina screen
slideShowImageName = [NSString stringWithFormat:@"iphoneipod%d@2x.png",[_SlideNumber intValue]];
}
}
else
{
//iphone screen
slideShowImageName = [NSString stringWithFormat:@"iphoneipod%d.png",[_SlideNumber intValue]];
}
}
}
NSLog(@"slideShowImageName : %@",slideShowImageName);
return slideShowImageName;
}
-(IBAction)reset:(id)sender{
[self setSlideNumber:[NSNumber numberWithInt:0]];
[self begin:nil];
}