2011-03-09 73 views
0

我有一个在纵向模式下的界面生成器中有一个XIB,它有5个UILabels,它在视图中均匀分布。当iPhone向左或向右旋转时,我希望标签在视图中均匀分布以充分利用额外的屏幕宽度。InterfaceBuilder将风景

我可以用一个控件很容易地使用尺寸&位置位接口构建器,但我该如何设置其他控件来做到这一点呢?

这是你必须做的事情编程?

感谢

迈克 enter image description here

回答

0

你可以尝试通过设置UIView有autoresizingMask属性做到这一点。这将是最简单的方法,如果你能得到它想要的。您可以设置此,无论你创建或初始化您的观点:

view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

这有可能是你将不能够得到您的标签这种方式的所有5个精确定位;但你至少应该能够使用它们中的一些。其余的,你想实施UIViewControllerwillRotateToInterfaceOrientation:duration:方法。每当iPad旋转时都会调用它,并且可以在该方法中设置标签的位置。

+0

我不明白这是如何工作的。我附上了IB的屏幕截图,以帮助您更好地向我解释。 – hydev 2011-03-09 16:22:39

+0

它根本与IB没有关系。在代码中,你有你的UIViewController类来控制视图。在这个类中,你想实现'willRotateToInterfaceOrientation:duration:'方法。从该方法内部,您可以将标签设置为您想要的位置。如果您的控制器中没有指向您标签的指针,则可以在您的课程中将它们声明为IBOutlets,并将它们连接到在IB中创建的标签。 – GendoIkari 2011-03-09 16:54:46

+0

哦,对不起,我现在和你在一起。非常感谢你。 – hydev 2011-03-09 17:09:29

0

这取决于控件如何在xib周围定位,在大多数情况下,您应该能够避免使用界面构建器中的“自动调整”下显示的属性进行编码。基本上,你在这里做的一切都可能在使用代码来完成

view.autoresizingMask = UIViewAutoresizing<and the various masks here> 

不要忘记实现viewDidLoad方法的方式,告知视图来重新定位元素

-(void)viewDidLoad{ 

self.view.autoresizesSubviews = YES; 

[super viewDidLoad]; 

}

此外,有用的一点是,在ipad上,在navigationcontroller中嵌入viewcontrollers使ipad处理大部分旋转和调整大小问题。