2013-03-05 106 views
0

我知道有一些关于UIImageView全尺寸的问题已经被问到,但我仍然坚持我的问​​题。全屏显示UIImageView(320 * 480)

我有一个导航栏,滚动视图,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]; 


    }]; 
} 
+0

你的问题没有意义。图片3或4如何全尺寸?什么是“旧观点”? – Mundi 2013-03-05 17:13:27

回答

3

首先,你必须确保你的框架是正确的。我注意到你保留了原点的x和y,也许这些都必须每次都重置。一些实验很快会导致期望的结果。

第二个,通过将contentMode设置为UIViewContentModeCenter您正在防止图像缩放。您需要启用缩放图像像其中的一个内容模式:

UIViewContentModeScaleToFill 
UIViewContentModeScaleAspectFit 
UIViewContentModeScaleAspectFill 

最后,涵盖了导航栏,你将不得不从主视图中删除视图和添加它代替窗口

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

当然,重置您将不得不做相反的事情。
另外,我建议在viewDidDisappear中清除它。

+0

非常感谢。我成功地做到了。但我仍然不知道如何确定我的原始帧的x,y,宽度和高度,以便从头开始恢复。其实我必须检查故事板中的x,y ...才能知道。先谢谢你。对不起,我的英语不好。 – jackiviet 2013-03-06 09:24:08

2

要摆脱状态栏和导航栏,你必须隐藏它们。隐藏他们没有动画...

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

当然,当你想要他们回来你必须设置隐藏到NO。

+0

非常感谢。它的作用像一个魅力:D – jackiviet 2013-03-06 09:27:17