2012-03-26 55 views
2

我在视图上动态创建了一些按钮,并根据我的一些JSON响应参数决定了它们的框架。但是我想在设备(dsimulator)旋转时自动调整它们。我可以很容易地在界面构建器上做到​​这一点,但不能对动态的做任何事情。有人可以帮忙吗? 编辑如何处理动态创建的UIButton元素上的自动调整

这里是我的代码

if (button.tag==1) { 
    button.frame = CGRectMake(30.0f, yPosition, 200.0f, buttonHeight); 
} 
if (button.tag==2) { 
    button.frame = CGRectMake(280.0f, yPosition, 200.0f, buttonHeight); 
} 
if (button.tag==3) { 
    button.frame = CGRectMake(530.0f, yPosition, 200.0f, buttonHeight); 
} 

一个文档片断有使用Portraid模式时没有问题,但是当它旋转到横向一大空白区域停留在屏幕的右侧。我怎样才能解决这个问题(我的意思是,当我旋转,我想按钮到了scren的宽度中心)

编辑: 我用自动尺寸上播放尺寸督察(的Xcode 4.3)与我的厦门国际银行文件,它的效果很好,但无论我做了什么,我都无法调整旋转后动态创建的按钮。我尝试了几乎所有的AutoresizingMask enums of UIView,但没有任何变化。有人可以请帮助

回答

1

属性你”已经在您的界面生成器文件中设置了UIViewAutoresizing属性。

看看this documentation from Apple on the UIView class(你的按钮是其子类);查找UIViewAutoresizing属性。这是你想要的。

更新:下面是一个使用这种能力的一个的MKMapView代码片段:

mainMapView = [[MKMapView alloc] initWithFrame:CGRectMake(20, 239, 280, 122)]; 
[mainMapView setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 

随着UIViewAutoresizingFlexibleTopMargin,地图视图向下移动,当用户接听电话---它修复地图的位置相对于屏幕的顶部。

挖掘文档中的内容,您会发现最适合您情况的自动调整屏蔽。

+0

我已经静态地决定了帧(frame = ...),所以无论我使用它什么都不会改变。你能给一些代码示例吗? – ilhnctn 2012-03-26 17:20:15

+0

已更新,其中包含一些适用于您的代码。 – bryanjclark 2012-03-26 20:01:18

+0

你能看到我的编辑 – ilhnctn 2012-03-28 11:06:36

2

您可以通过代码定义什么是设备旋转时的预期行为。

你可以看看:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/c/tdef/UIViewAutoresizing

您需要设置按钮的行为,如果你把喜欢:

[button setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin]; 
+0

谢谢@ggrana,你能看到我的编辑? – ilhnctn 2012-03-26 17:08:35

+0

我没有得到你想要的东西,但你尝试了我放在那里的面具?如果您想要更复杂的操作,您可以执行http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html中的苹果文档中的内容,并覆盖shouldAutorotateToInterfaceOrientation: – ggrana 2012-03-26 20:39:42

+0

I想调整按钮的框架。我动态创建这些按钮 – ilhnctn 2012-03-28 11:08:14