如何处理动态创建的UIButton元素的自动调整大小

时间:2012-03-26 16:42:14

标签: objective-c ipad uibutton autoresizingmask

我在视图上动态创建一些按钮,然后根据我的一些JSON respone参数决定它们的帧。但我想在设备(dsimulator)旋转时自动调整它们。我可以轻松地在界面构建器上执行此操作,但无法对动态创建任何操作。有人可以帮忙吗? 的修改

这是我的代码剪辑

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宽度的中心)

修改 我使用我的xib文件在Size Inspector(Xcode 4.3)上进行了自动调整,并且效果很好,但无论我做什么,我都无法在旋转后调整动态创建的按钮。我几乎尝试了所有AutoresizingMask enums of UIView,但没有任何变化。有人可以帮忙吗

2 个答案:

答案 0 :(得分: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]; 

答案 1 :(得分: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时,地图视图会在用户接听电话时向下移动---它会修复地图相对于屏幕顶部的位置。

在文档中进行挖掘,您将找到最适合您情况的自动调整遮罩。