水平UIButton中的垂直文本

时间:2012-11-05 10:51:06

标签: ios objective-c text uibutton vertical-alignment

我在肖像应用程序中使用垂直UIButton(只是一个宽度为60且高度为160的普通按钮)

我想将标签按照按钮而不是横跨按钮。

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

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

它会旋转标签,但长度似乎受到原始宽度的限制,因此我在中间得到了... abreviation。这有一个简单的方法吗?

5 个答案:

答案 0 :(得分:4)

您可以在按钮上添加标签并旋转标签,如下所示:

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];

答案 1 :(得分:1)

我知道这是一个旧线程,但另一种方法是将按钮子类化并为按钮标签指定方形大小。

@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

在代码或Storyboard中创建的任何RotatingButton的标签都可以旋转而不会被截断。

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

答案 2 :(得分:1)

我为堆栈视图中的按钮添加了相同的问题 所以我需要一些动态的东西

对于Swift 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

答案 3 :(得分:0)

我从来没有这样做,但您是否尝试将按钮创建为水平按钮(160w x 60h)然后旋转整个按钮?

答案 4 :(得分:0)

为方便起见,请对“属性”检查器中的按钮执行以下设置:

  • 类型:自定义
  • 标题:归属

接下来,选择左/中/右或对齐对齐。不要使用'Align Natural'。

现在

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

按预期工作,标签没有被删除(但总是居中对齐......)。

使用XCode 6.3进行测试。