以编程方式创建UIView,在旋转设备时保留其大小

问题描述 投票:0回答:2

我正在以编程方式创建一个UIView,它最终将成为我的通用应用程序的帮助语音泡沫,但我很难让UIView支持设备轮换。当我的视图被创建时,它看起来很棒,就像我想要的那样但是当我旋转设备时,我的UIView popover会扩展以填满整个屏幕,这不是我想要的。

如果有帮助的话,我正在使用带有自动布局的iOS 6用于其他故事板控件。

有人可以解释为什么iOS在设备轮换时将我的popover调整为全屏?

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

我使用的代码是:

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];
ios ipad cocoa-touch popup popover
2个回答
2
投票
[customView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

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

 [customView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin];

1
投票

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

例如。在autolayout中做同样的事情

  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];
© www.soinside.com 2019 - 2024. All rights reserved.