无法使用 CGRectMake 隐藏视图控制器内的视图

Posted

技术标签:

【中文标题】无法使用 CGRectMake 隐藏视图控制器内的视图【英文标题】:Cannot hide a view inside View controller with CGRectMake 【发布时间】:2013-08-13 18:13:57 【问题描述】:

我在我的视图控制器上使用了一个 UIView 项目,它包含一个选择器视图和一个按钮,只有在单击显示按钮时才需要出现在屏幕上。

我为我的 UIView 创建了一个名为 *pickerView 的插座

这个视图的默认位置(在 Xcode 的右侧属性栏上)是 (0,200,320,261) for (x,y, height and width) 这基本上使它出现在 ViewController 的底部。

我在视图控制器加载时最初隐藏这个视图所做的事情是,在 ViewDidLoad 方法中我输入了这段代码:

pickerView.frame=CGRectMake(0,450,320,261);

对于显示按钮的动作,

pickerView.frame=CGRectMake(0,200,320,261);

我在这个 UIView 中有一个隐藏按钮,在它的操作中我有

pickerView.frame=CGRectMake(0,450,320,261);

所以,从我运行应用程序时的预期来看,UIView pickerView 最初应该因为 viewDidLoad 中的代码而隐藏,并且显示按钮应该将它带到屏幕上。 我的问题是显示和隐藏按钮工作正常,但是每次我加载这个 ViewController 时,默认情况下视图都会出现在屏幕上。当我加载 viewController 时帮助我隐藏这个 UIView。

【问题讨论】:

【参考方案1】:

Simpley 不设置选取器视图的框架 我发布了一个示例代码,它使选择器视图在点击按钮时隐藏并出现 我正在使用“隐藏”属性 听到是示例代码

  - (void)viewDidLoad
 
    [super viewDidLoad   // Do any additional setup after loading the view, typically from a nib.
                         //as simple dont set frame.
                         // i am using xib from there i wired up picker view
  self.myPickerView.hidden = YES; //just hide it whenever you dont use it.

 

- (IBAction)whenShowHideButtonTapped:(id)sender
 
     //when button pressed just show it
     if(self.myPickerView.hidden)
      
         self.myPickerView.hidden = NO;
      
     else
      
         self.myPickerView.hidden = YES;
      


希望这会有所帮助.. :)

【讨论】:

【参考方案2】:

您可以像这样调用“viewWillAppear:”中的隐藏代码:

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    [self hidePicker];

【讨论】:

以上是关于无法使用 CGRectMake 隐藏视图控制器内的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 中隐藏/显示带有动画的 UIView

UIStackView 隐藏视图和旋转时无法满足的布局

如何隐藏片段内的活动视图

Resharper 无法解析母版页内的部分视图

如何隐藏带有另一个视图控制器的标签栏视图控制器?

在网格视图中的 ASCX 控件内的控件上使用 Javascript 显示隐藏。 (ASP.NET + Javascript)