自动布局和旋转按钮

时间:2015-04-09 16:46:40

标签: ios uibutton cgaffinetransform catransform3d

我正在寻找以下内容;

Rough Sketch

我做到了这一点;

初始UIButton设置;

self.changeButton = [UIButton buttonWithType:UIButtonTypeSystem];
[self.changeButton setTitle:@"MyText" forState:UIControlStateNormal];
[self.view addSubview:self.changeButton];

[self.changeButton mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.top.equalTo(self.view);
    make.width.equalTo(@150);
    make.height.equalTo(@50);
}];

我试过了以下内容;

以下两者给出了与上图所示相同的结果;

self.changeButton.transform = CGAffineTransformMakeRotation(-M_PI_2);
self.changeButton.layer.transform = CATransform3DMakeRotation(-M_PI_2, 0, 0, 1);

我最初也设置按钮如下所示,并尝试仅旋转TitleLabel,但它只是将文本显示为“...” - 旋转后可能没有足够的空间用于TitleLabel;

[self.changeButton mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.top.equalTo(self.view);
    make.width.equalTo(@50);
    make.height.equalTo(@150);
}];

self.changeButton.titleLabel.transform = CGAffineTransformMakeRotation(-M_PI_2);

有人可以帮助我获得实际结果吗?我错过了什么?

1 个答案:

答案 0 :(得分:0)

我想我明白了 - 当按钮从中心旋转时,我需要相应地改变我的初始按钮框架。

以下工作;

[self.changeButton mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.view).offset(-50);
    make.top.equalTo(self.view).offset(50);
    make.width.equalTo(@150);
    make.height.equalTo(@50);
}];