【问题标题】:shouldAutorotateToInterfaceOrientation to current UIView of UIViewControllershouldAutorotateToInterfaceOrientation 到 UIViewController 的当前 UIView
【发布时间】:2012-01-19 07:46:58
【问题描述】:

我有 UIViewController,有 2 个 UIView。第一个 UIView 是主视图。在某个按钮操作点,我将第二个 UIView 的子视图添加到第一个 UIVIew。

所以我想如果只有第一个 UIView 可以旋转,但如果我添加其他 UIView 的子视图,它不会让旋转。所以我必须识别主视图是否有第二个视图的子视图并且不要让旋转。像这样的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

     if (_secondView) {
     return NO;
     }
    // Return YES for supported orientations
    return YES;
}

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    您可以通过设置视图的标签来返回真或假,对于标签的值,您可以定义宏。或者您可以使用按钮中附带的button.selected 功能。这样您就可以节省额外的变量以供使用。

    【讨论】:

    • 谢谢大家的回答。我还想再问一个问题:如果我有这样的出口:@property(nonatomic,retain) IBOutlet UIView *sView;在某个时候,我将它放在其他 UIView 上以进行子视图。比我从 superreview 中删除它,我想再次添加,但我不能。这是因为当我删除它而不是自动释放?
    • 不,除非您将其设置为 nil。我建议您接受答案,然后将其作为单独的问题发布。
    • 不,它不会自动释放,哦,检查你是否在主线程中添加子视图。请注意,所有 UI 更改调用必须发生在主线程、Cheers、Shravan
    【解决方案2】:

    当第二个视图被添加时设置一个实例布尔变量为真,当第二个视图被删除时设置为假,这应该可以工作。否则,请告诉我们为什么它不起作用。

    【讨论】:

    • 另外你需要在你的 VC 中设置 shouldAutorotateToInterfaceOrientation:,而不是视图。
    【解决方案3】:

    检查 [secondView superView] == nil。如果不是 nil,则表示 secondView 已经是视图树的一部分(在我们的例子中,是 firstView 的子视图)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 2010-11-23
      • 2012-01-11
      • 1970-01-01
      • 2014-02-04
      • 2012-07-14
      • 2012-06-03
      相关资源
      最近更新 更多