复制UIButtons框架给出了错误的位置

时间:2017-11-24 10:53:09

标签: ios objective-c uiview uibutton frame

我想在UIButton上创建另一个UIView / UIButton,所以我得到它的'框架并在另一个UIView的声明中使用它,但它创建如下截图(蓝色视图)。顺便说一句,按钮是在故事板上创建的。

我正在使用Xcode 9.1和iOS 11.1

- (void)viewDidLoad {

    UIView *picker = [[UIView alloc] initWithFrame:_mButton.frame];
    picker.backgroundColor=[UIColor blueColor];
    [self.view addSubview: picker];
}

Screenshot 1 Screnshot 2

1 个答案:

答案 0 :(得分:0)

我想在viewDidLoad中没有计算出正确的帧数。您可以尝试将picker设为属性,并在viewDidLayoutSubviews

中调整其框架
@property (strong, nonatomic) UIView *picker;

- (void)viewDidLoad {
    [super viewDidLoad];
    self.picker = [[UIView alloc] initWithFrame:_mButton.frame];
    self.picker.backgroundColor=[UIColor blueColor];
    [self.view addSubview: self.picker];
}

- (void)viewDidLayoutSubviews {
    self.picker.frame = _mButton.frame;
    [super viewDidLayoutSubviews];
}

但如果你有这种可能性,那么使用故事板和自动布局当然可能是最好的解决方案。