全屏显示UIImageView(320 * 480)

时间:2013-03-05 16:30:21

标签: ios objective-c xcode xcode4

我知道有一些关于UIImageView全尺寸的问题已被问到,但我仍然遇到了我的问题。

我有一个导航栏,一个滚动视图,一个UIImageView(名为avatarTest)和一个按钮。当我按下图像时,UIImageView会扩展为全尺寸(320 * 480)并将avatarTest.contentMode设置为ModeCenter。

我的问题是:

  • UIImageView扩展到320 * 480但它没有取代导航栏和状态栏(如图1和图2)

  • 当我向下滚动(现在我的按钮出现)并按下图像时,UIImageView仍然会根据旧视图进行扩展。我希望它扩展到完整尺寸,填写我当前的视图(窗口)(如图3和图4)

  • 我想知道如何通过代码确定UIImageView的原始帧(CGRectMake),这样我就可以编写第二次按下操作的代码(将图像调整为原点)

enter image description here

enter image description here

enter image description here

enter image description here

以下是我的viewController.m代码:

- (IBAction) expand {

    [UIView animateWithDuration:0.5f animations:^{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
        CGFloat screenWidth = screenRect.size.width;
        CGFloat screenHeight = screenRect.size.height;            
        avatarTest.frame=CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, screenWidth, screenHeight);
        avatarTest.contentMode=UIViewContentModeCenter;
        avatarTest.backgroundColor = [UIColor blackColor];


    }]; 
} 

2 个答案:

答案 0 :(得分:3)

首先,您必须确保您的框架正确无误。我注意到你保留了原点的x和y,也许这些都必须每次重置。一些实验很快就会产生预期的结果。

第二次,将contentMode设置为UIViewContentModeCenter即可阻止图像缩放。您需要启用一种缩放图像的内容模式,如下所示:

UIViewContentModeScaleToFill
UIViewContentModeScaleAspectFit
UIViewContentModeScaleAspectFill

最后,要覆盖导航栏,您必须从主视图中删除视图,然后将其添加到窗口

[avatarTest removeFromSuperview]; 
[self.view.window addSubview:avatarTest]; 

当然要重置你必须做相反的事 另外,我建议在viewDidDisappear

中清除它

答案 1 :(得分:2)

要删除状态栏和导航栏,您必须隐藏它们。在没有动画的情况下隐藏它们......

[self.navigationController setNavigationBarHidden:YES animated:NO];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

当然,当你想要它们时,你必须将隐藏设置为NO。