在一个水平的UIButton垂直文本(Vertical text in a Horizontal U

2019-07-03 13:30发布

我使用在纵向应用的垂直的UIButton(只是一个普通按钮是宽度60和高度160的)

我希望把标签Vetically按下按钮,而不是越过它。

当我使用下面的代码以旋转标签

    [workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];

它旋转的标签,但长度似乎是由原始的宽度受到限制,所以我得到在中间......缩写符号。 有一个简单的办法解决这?

Answer 1:

您可以在按钮添加一个标签和下面转动标签:

UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(button.frame.size.width*.3, button.frame.size.height*.5, button.frame.size.width,button.frame.size.height)];
lbl.transform = CGAffineTransformMakeRotation(M_PI / 2);
lbl.textColor =[UIColor whiteColor];
lbl.backgroundColor =[UIColor clearColor];
[button addSubview:lbl];


Answer 2:

我知道这是一个古老的线程,但另一种方式来做到这一点是继承按钮,并指定按钮标签的正方形大小。

@interface RotatingButton : UIButton

@end


@implementation RotatingButton

- (CGRect) titleRectForContentRect:(CGRect)bounds {
    CGRect frame = [super titleRectForContentRect:bounds];

    frame.origin.y -= (frame.size.width - frame.size.height) / 2;
    frame.size.height = frame.size.width;

    return frame;
}

@end

在代码或故事板创建的任何RotatingButton的标签可以不被截断而旋转。

[button.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];


Answer 3:

我添加了同样的问题,为按钮堆栈视图所以我需要的东西动态

对于雨燕4.2

class VerticalButton: UIButton {

    override func titleRect(forContentRect bounds: CGRect) -> CGRect {
        var frame: CGRect = super.titleRect(forContentRect: bounds)

        frame.origin.y = 0
        frame.size.height = bounds.size.height

        return frame
    }
}
extension UILabel {
    @IBInspectable
    var rotation: Int {
        get {
            return 0
        } set {
            let radians = CGFloat(CGFloat(Double.pi) * CGFloat(newValue) / CGFloat(180.0))
            self.transform = CGAffineTransform(rotationAngle: radians)
        }
    }
}

    let button = VerticalButton.init(type: UIButton.ButtonType.custom)
    button.titleLabel?.textAlignment = .center
    button.titleLabel?.rotation = -90


Answer 4:

我从来没有这样做,但你有没有尝试创建按钮为水平按钮(160瓦特X 60H),然后旋转整个按钮?



Answer 5:

一个简单的方法做圆在属性检查器按钮进行如下设置:

  • 类型:自定义
  • 标题:主

接下来,选择左/中/右或两端对齐。 不要使用“对齐自然”。

现在

[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];

作为与标签没有被简写为预期工作(但总是被中心对齐...)。

测试过的XCode 6.3。



文章来源: Vertical text in a Horizontal UIButton