旋转UIButton titleLabel而不剪裁

时间:2014-12-05 04:11:40

标签: ios iphone swift uibutton facebook-pop

我正在尝试将UIButton的titleLabel旋转45度。文本中的字符是“+”。

我可以用

来旋转标题

button.titleLabel?.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))

但是,“+”符号的一端会被剪裁,如下面的屏幕截图所示。

enter image description here enter image description here

我找到this,但我无法完全解决问题的解决方法。奇怪的是,剪切的部分仍然存在于另一端的边界内 - 它不会突出于符号的“正方形”之外。

我也尝试使用Facebook的Pop库,这种方式有用,除了我无法弄清楚如何进行正常的逆时针或顺时针旋转。我将kPOPLayerRotationM_PI_4一起使用,它做了一些意想不到的事情。如果有人能提供基本的顺时针/逆时针旋转的示例代码,我很乐意使用Pop。

可能相关的问题:titleLabel的中心也会移动。有没有一种简单的方法可以防止这种情况发生?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您正在旋转按钮的titleLabel,它位于按钮内部。按钮没有旋转。但标签是旋转的。因此,您正在获得标签的剪辑或中心错位。我建议你旋转按钮本身。所以它也会旋转它的子视图。

// Check already it was rotated,transformed...?
if (CGAffineTransformIsIdentity(button.transform)) {

    //Yes, Reset to the original position and size.
    button.transform = CGAffineTransformIdentity;

}

//Apply rotation now
button.transform=CGAffineTransformMakeRotation(M_PI_4);

答案 1 :(得分:0)

对于将来参加此活动的人,我最终创建了一个新的UIView(蓝色矩形),其中包含UIButton(白色' +')。然后我在UIButton上禁用了使用的交互,并为UIView添加了一个手势识别器。当我想旋转' +'时,我旋转了整个UIButton(但不包含UIView)。