我知道有一些关于UIImageView全尺寸的问题已被问到,但我仍然遇到了我的问题。
我有一个导航栏,一个滚动视图,一个UIImageView(名为avatarTest)和一个按钮。当我按下图像时,UIImageView会扩展为全尺寸(320 * 480)并将avatarTest.contentMode设置为ModeCenter。
我的问题是:
UIImageView扩展到320 * 480但它没有取代导航栏和状态栏(如图1和图2)
当我向下滚动(现在我的按钮出现)并按下图像时,UIImageView仍然会根据旧视图进行扩展。我希望它扩展到完整尺寸,填写我当前的视图(窗口)(如图3和图4)
我想知道如何通过代码确定UIImageView的原始帧(CGRectMake),这样我就可以编写第二次按下操作的代码(将图像调整为原点)
以下是我的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)
首先,您必须确保您的框架正确无误。我注意到你保留了原点的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。