我在纵向应用程序中使用垂直 UIButton(只是一个宽度为 60 和高度为 160 的普通按钮)
我想将标签 Vetically 放在按钮上,而不是放在按钮上。
当我使用以下代码旋转标签时
[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
它旋转标签,但长度似乎受到原始宽度的限制,所以我在中间得到了 ... 缩写。有没有简单的方法来解决这个问题?
我在纵向应用程序中使用垂直 UIButton(只是一个宽度为 60 和高度为 160 的普通按钮)
我想将标签 Vetically 放在按钮上,而不是放在按钮上。
当我使用以下代码旋转标签时
[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
它旋转标签,但长度似乎受到原始宽度的限制,所以我在中间得到了 ... 缩写。有没有简单的方法来解决这个问题?
您可以在按钮上添加标签并旋转标签,如下所示:
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];
我知道这是一个旧线程,但另一种方法是对按钮进行子类化并为按钮标签指定正方形大小。
@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)];
我为堆栈视图中的按钮添加了同样的问题所以我需要一些动态的东西
斯威夫特 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
我从来没有这样做过,但是您是否尝试过将按钮创建为水平按钮(160w x 60h)然后旋转整个按钮?
为简便起见,请在属性检查器中对按钮进行以下设置:
接下来,选择左/中/右或两端对齐。不要使用“对齐自然”。
现在
[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
在标签未缩写的情况下按预期工作(但始终居中对齐......)。
使用 XCode 6.3 测试。