1

以下の方法論を使用して背景画像を設定しています。デバイスを回転させると背景が繰り返されますが、これは画像ではないため意味があります。これが背景画像の設定方法である場合、向きの変更にどのように対処すればよいですか?

- (void)viewDidLoad {
    [super viewDidLoad];
    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
    self.view.backgroundColor = background;
    [background release];
}
4

3 に答える 3

6

この概念を理解するのに少し時間がかかりました。ポートレートとランドスケープで同じ画像を作りたくありませんでした。ここで重要なCGAffineTransformMakeRotationのは、UIImageView または任意の UIView の元の状態から回転することです。これは、背景画像に向きがあることを前提としています。たとえば、他のオブジェクトが通常の方向変更イベントで動作している間、UIImageView をそのままにしておく必要があります。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                duration:(NSTimeInterval)duration {

    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {  
        backgroundImage.transform = CGAffineTransformMakeRotation(M_PI / 2);
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
        backgroundImage.transform = CGAffineTransformMakeRotation(-M_PI / 2);
    }
    else {
        backgroundImage.transform = CGAffineTransformMakeRotation(0.0);
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //set the UIImageView to current UIView frame
    backgroundImage.frame = self.view.frame;
}
于 2011-01-06T01:47:00.330 に答える
0

私が正しく理解していれば、あなたが正しい向きを変えるたびにあなたの背景が作成または上書きされます。デフォルトbackgroundColornilです。これを確認できます。nilの場合は、先に進んで値を設定します。そのような

if ( self.view.backgroundColor == nil){
    //set the new values here
}   
于 2011-01-04T10:00:22.463 に答える
0

水平方向と垂直方向の両方で2つの画像を取得する必要があり、割り当ての代わりに[...: colorWithPatternImage:...];、向きがビューの背景に変更されたときに使用および設定できます。

ハッピーアイコーディング...

于 2011-01-04T12:26:59.590 に答える