0

我正在以编程方式创建一个 UIView,它最终将成为我的通用应用程序的帮助气泡,但我很难让 UIView 支持设备旋转。创建我的视图时,它看起来很棒,正是我想要的,但是当我旋转设备时,我的 UIView 弹出框会扩展以填充整个屏幕,这不是我想要的。

如果有帮助,我将使用带有自动布局的 iOS 6 来处理其他情节提要控件。

有人可以解释为什么 iOS 在设备旋转时将我的弹出框调整为全屏吗?

我还考虑为其添加一些约束,但认为这更多的是用于子层而不是弹出视图本身。

我正在使用的代码是:

customView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 200, 200)];

customView.layer.cornerRadius = 15;
customView.layer.borderWidth = 1.5f;
customView.backgroundColor = [UIColor blackColor];
[customView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

[self.tableView.superview addSubview:customView];
4

2 回答 2

2
[customView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

当父视图更改时,Flexiblewidth/height 自动调整大小掩码会调整 UIView 的大小。当视图旋转时,您的超级视图的框架会更改,并且视图将按比例更改宽度和高度。如果您想要相同的大小,请删除该行,如果您想要在视图周围使用相同的填充

 [customView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin];
于 2013-02-11T22:44:00.000 回答
1

从 iOS6 开始,苹果鼓励使用自动布局,因为代码更具描述性并且更易于管理/调试。

例如。在自动布局中做同样的事情

  UIView *customView = [[UIView alloc] init];
  customView.backgroundColor = [UIColor blackColor];
  customView.layer.cornerRadius = 15;
  customView.layer.borderWidth = 1.5f;
  [customView setTranslatesAutoresizingMaskIntoConstraints:NO];
  [self.tableView.superview addSubview:customView];

  NSArray *arr;

  //horizontal constraints
  arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[customView(200)]"
                                                         options:0
                                                         metrics:nil
                                                           views:NSDictionaryOfVariableBindings(customView)];
  [self.tableView.superview addConstraints:arr];

  //vertical constraints
  arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[customView(200)]"
                                                options:0
                                                metrics:nil
                                                  views:NSDictionaryOfVariableBindings(customView)];
  [self.tableView.superview addConstraints:arr];
于 2013-02-11T23:06:09.163 回答