2

我在视图上动态创建了一些按钮,并根据我的一些 JSON 响应参数来决定它们的框架。但是我想在设备(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);
}

使用纵向模式时没有问题,但是当它旋转到横向时,屏幕右侧会留下一个很大的空白区域。我该如何解决这个问题?(我的意思是,当我旋转时,我希望按钮到达屏幕宽度的中心)

编辑: 我用我的 xib 文件在 Size Inspector(Xcode 4.3) 上进行了自动调整大小,它工作得很好,但无论我做什么,我都无法在旋转后调整动态创建的按钮的大小。我尝试了几乎所有UIView 的 AutoresizingMask 枚举,但没有任何变化。有人可以帮忙吗

4

2 回答 2

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]; 
于 2012-03-26T16:56:13.750 回答
1

您在界面构建器文件中设置的属性就是UIViewAutoresizing属性。

查看Apple 提供的有关 UIView 类(您的按钮是其子类)的文档;寻找UIViewAutoresizing属性。那就是你想要的那个。

更新:这是使用此功能的 MKMapView 的代码片段:

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

使用UIViewAutoresizingFlexibleTopMargin,当用户接听电话时,地图视图会向下移动 --- 它会固定地图相对于屏幕顶部的位置。

在文档中四处挖掘,您会发现最适合您的情况的自动调整大小掩码。

于 2012-03-26T17:14:32.370 回答