2010-05-07 65 views
4

iPad大师:Apple希望我们支持所有的方向。我认为一个特定的布局应该旋转,以便所有对象的位置相对相同,如果这看起来不太好,那么应该重新定位,或者应该设计和构建两个视图。在iPad中重新定位期间将对象定位在视图中

如果我靠内置的旋转机构,对象要么得到调整或他们跨越页面的边缘在一个方向或另一个,或者他们从视图中完全消失。我似乎无法找到正确的设置来让对象清晰对齐,以便在每个方向上看到它们。

重新定位会导致View Controller中出现很多if语句。所以我不认为苹果有这个想法。

我试图在“willRotateToInterfaceOrientation”方法代替视图和甚至视图控制器,但是,要么导致崩溃或纵向视图横向最终出乎意料和VV。而且,两个视图控制器意味着对相同视图的编码加倍。

必须有正确的方法来处理方向变化,但我已经搜索了互联网和文档和示例代码徒劳无功的东西。这是如何正确完成的?

谢谢!

回答

0

花费一些时间在Interface Builder中了解什么是“autosizing”和“size & position”do(size inspector)。它们可以分别为每个的UILabel,按钮,酒吧,图片等

而且扩展到填充,方面配合,一方面填充等来配置要理解有用(属性检查员)。

不要忘了覆盖shouldAutorotateToInterfaceOrientation返回YES,然后一切都应该使用单一的UIViewController和UIView的工作。

-1

由于在OranLooney.com伟大的职位,我能得到一个Java/ICEfaces的web应用程序在iPad上很好地调整。

donnothing();在window.orientationchange是有的,因为它似乎有时没有它的调整大小将(有时)不起作用,在你的情况下,虽然我想这是你想让代码启动一个新的视图。

// a function to parse the user agent string; useful for 
// detecting lots of browsers, not just the iPad. 
function checkUserAgent(vs) { 
    var pattern = new RegExp(vs, 'i'); 
    return !!pattern.test(navigator.userAgent); 
} 
if (checkUserAgent('iPad')) { 
    // iPad specific stuff here 
window.onorientationchange = function() { 
    donnothing(); 
}; 
} 

如果你想出如何让双击让我们知道!

+0

return !! patte ... since!是否定,目的是什么!那原来的陈述结果呢? – 2010-06-13 20:13:56

0

推荐的,和直接的方式做到这一点如下:

  1. 所有的子视图添加到主视图的笔尖文件或视图控制器的viewDidLoad方法。
  2. 覆盖视图控制器视图的layoutSubviews方法。在此方法中,检查视图的方向是纵向还是横向,并根据所需的尺寸和位置设置每个子视图的frame属性。
  3. 在视图控制器的-willRotateToInterfaceOrientation:duration:方法中调用[self layoutSubviews]方法。注意 - 当视图旋转时,可能会自动调用layoutSubviews,我不记得了。如果没有,请自己调用。
0

转到GitHub并查看NextMunich的NMView类(以及NMViewController)。非常非常强大并且非常易于实施。基本上,它是为需要更复杂的视图层次结构的人而构建的,但不想编写大量额外的代码来处理方向。它一旦你把它放下,它就会为你做。

令人惊叹的真棒。在我选择了他们的大脑之后,我偷看了他们的观点动画的一些想法。他们是超级友善的人。