【问题标题】:Orientation changes issues方向变化问题
【发布时间】:2011-05-19 09:25:22
【问题描述】:

我在方向更改方面遇到了一些问题。实际上,我有两个按钮,我希望它们彼此粘在一起并居中:

-------------------------------------------
|          | Button1 | Button2 |          |
-------------------------------------------

为此,我使用以下方法:

- (void)positionViews
{

    CGPoint center = self.view.center;

    CGRect frame = self.buttonScreens.frame;
    frame.origin.x = center.x - frame.size.width;
    self.buttonScreens.frame = frame;

    frame = self.buttonGroups.frame;
    frame.origin.x = center.x;
    self.buttonGroups.frame = frame;

}

在 viewDidLoad 和 didRotateFromInterfaceOrientation: 中调用,当方向为竖屏时效果很好,当方向变为横屏时效果很好,但是当视图加载时按钮不会显示为居中,此时已经是横屏:

-------------------------------------------
|       | Button1 |  | Button2 |          |
-------------------------------------------

有什么问题?我该如何解决?

【问题讨论】:

    标签: cocoa-touch ios


    【解决方案1】:

    didRotateFromInterfaceOrientation 会被调用两次,以防在横向加载视图时,就像加载纵向然后旋转到横向一样。

    我的解决方案是在 viewDidLoad 的开头添加 bool 标志并将其设置为 YES 和

    if (self.firstRun == YES)
    {  
        self.firstRun = NO;
        return;
    }
    

    在 didRotateFromInterfaceOrientation 中。

    发生这种情况是因为您的 nib 文件设置为纵向并且将始终以纵向加载,从而触发通知。

    【讨论】:

    • 实际上这对我来说是一个稍微不同的问题,因为我使用的是导航控制器,它创建然后将视图控制器推送到按钮触摸事件上。正如你所说,创建的控制器是纵向创建/加载的,并且永远不会被旋转(didRotateFromInterfaceOrientation 永远不会被调用)......
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多