【问题标题】:Different portrait and landscape layouts不同的纵向和横向布局
【发布时间】:2014-03-08 16:24:17
【问题描述】:

我正在尝试处理 Xcode 中的布局。我似乎找不到一篇写得足够好让我微弱的头脑去追随的文章。我有 10 年的编程经验,但刚刚进入 Objective-C。我需要一些关于处理不同观点的教程。似乎他们会使用一些更好的工具来开发按设计旋转的设备。

这是我的具体困境:应用程序以纵向视图加载,并且在侧面有几个按钮,如下所示:

[Button]

[Button]

[Button]

但是,当设备旋转时,我希望按钮像这样水平对齐:

[Button]    [Button]     [Button]

那么有没有人有任何建议或知道教程来帮助我完成此任务并更好地掌握方向?

【问题讨论】:

  • 欢迎来到 Stack Overflow!要求教程或其他场外资源的问题通常会被关闭,因为它们往往会吸引固执己见的答案和垃圾邮件。同理:就更大主题寻求一般性建议的问题往往过于宽泛,因此也有被关闭的风险。尝试更具体地回答您的问题,添加相关信息以帮助缩小范围:(您是在使用 IB 还是在代码中进行布局?您是否在使用自动布局?等等)并向我们展示您已经尝试过的内容(即使它没有成功)。
  • 另外,它是“Xcode”而不是“xCode”。我已经编辑了您的问题,但我看到您在个人资料中使用了相同的拼写;)

标签: ios objective-c screen-orientation uiinterfaceorientation


【解决方案1】:

在这种情况下,您的问题的简单答案是:您必须以编程方式执行此操作,或者将其放入 UICollectionView。 UICollectionViews 实际上是为了显示许多项目,而不是像您的情况那样只显示三个,所以实际上只剩下一件事:在代码中完成!

在处理应用程序这一部分的 viewController 中,您应该在 viewDidLoadinit 方法的某处运行此行:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                      selector:@selector(didRotate:) 
                                      name:UIDeviceOrientationDidChangeNotification                      
                                      object:nil];

这将调用方法- (void)didRotate:(NSNotification *)notification

你可以这样实现这个方法:

- (void) didRotate:(NSNotification *)notification
{   
      UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

       if (orientation == UIDeviceOrientationLandscapeLeft)
      {
        NSLog(@"Landscape Left!");
      }
}

并在您确定设备的方向后放置您的布局代码。

学分: 我从这个线程借了代码,Thx View rotation notifications: why didRotateFromInterfaceOrientation: doesn't get called?

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多