旋转后在ipad上更改背景图像

时间:2011-03-07 08:52:15

标签: iphone objective-c ipad uiimageview layoutsubviews

我使用UIImageView显示我的应用的bg。为了支持正确的接口旋转,我编写了layoutSubviews方法。在这个metod .frame属性正确更改,但当我尝试更改UIImageView的图像时,就像这样:

view = [self viewWithTag:1002];    
 ((UIImageView *)view).image = [UIImage imageNamed:@"portrait.png"];
没有改变。我做错了什么或者无法在UIImageView方法中更改layoutSubviews的图像?

2 个答案:

答案 0 :(得分:4)

试试这个

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {

    // change background here

    }

答案 1 :(得分:1)

您可以使用 UIViewController 管理视图的轮播(请务必查看此处的文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html)。如果您为 UIImageView 实现了 UIViewController ,则可以使用viewDidLoad:方法设置图像。

您不应该覆盖layoutSubviews:方法来执行此操作。 layoutSubviews:是按照名称中的说法执行的 - 它应该执行此视图当前具有的任何子视图的定位和大小调整。您不应该重写此方法,除非您想要在子视图中进行一些特殊的自定义布局,并在 UIView 设置为“需要调整大小”时在运行循环中调用。

我强烈建议您从代码中的其他位置设置图像。如果希望在旋转视图时更改图像,可以在 UIViewController 子类的- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation方法中设置图像。