IOS动画UINavigationController全局背景图像

时间:2013-02-04 08:01:16

标签: ios xcode

我的导航控制器加载事件中有以下内容......

UIImage *image = [UIImage imageNamed:@"Background.jpg"];
CGImageRef cgImg = CGImageCreateWithImageInRect(image.CGImage, CGRectMake(0, 0, 500, 620));
UIImage* part = [UIImage imageWithCGImage:cgImg];
UIImageView* imageView = [[UIImageView alloc] initWithImage:part];
[self.view insertSubview:imageView atIndex:0];

一旦我将嵌入视图设置为具有清晰背景,这将设置背景图像并正常工作。我的问题是如何在加载后更改此图像?

我正在寻找的效果是当我将不同的视图压入堆栈时,我想裁剪图像的新部分。

我知道我可以为每个表加载一个新图像,但我想要的效果是当你按下到下一个视图时,表格从右向左移动显示新表格,但背景从右向左移动只是一点点。

结束使用NSTimer和这个组合

[[self.navigationController.view.subviews objectAtIndex:0] removeFromSuperview];
[self.navigationController.view insertSubview:imageView atIndex:0];

1 个答案:

答案 0 :(得分:0)

将标签用于不同的backgroundView和其他视图

#deifne BACKGROUNDVIEWTAG  999
if(![self.view subviews] || ((UIView *)[[self.view subviews] objectAtIndex:0]).tag != BACKGROUNDVIEWTAG)
{
    UIImage *image = [UIImage imageNamed:@"Background.jpg"];
    CGImageRef cgImg = CGImageCreateWithImageInRect(image.CGImage, CGRectMake(0, 0, 500, 620));
    UIImage* part = [UIImage imageWithCGImage:cgImg];
    UIImageView* imageView = [[UIImageView alloc] initWithImage:part];
    imageView.tag = BACKGROUNDVIEWTAG;
    [self.view insertSubview:imageView atIndex:0];
}