0

すべての 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];
}
4

1 に答える 1