Вопрос по ios, text, objective-c, vertical-alignment, uibutton – Вертикальный текст в горизонтальной UIButton

2

используя вертикальную кнопку UIB в портретном приложении (обычная кнопка шириной 60 и высотой 160)

Я хочу поставить ярлык Vetically вниз на кнопку, а не через нее.

Когда я использую следующий код для поворота метки

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

Он поворачивает метку, но длина кажется ограниченной исходной шириной, поэтому я получаю ... сокращение в середине. Есть ли простой способ обойти это?

Смотрите ответ ниже, используя подкласс. Matt

Ваш Ответ

5   ответов
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];
Спасибо, это прекрасно работает. (Хотя я застрял с M_PI / 2) Приветствия за помощь. :) ArQangel
я пытался, но значения кадра не совпадают, я пытался CGRectMake (0, 0, button.frame.size.height, button.frame.size.weight) он остается ближе, чем раньше .. ilhnctn
Я просто удивился, так что попробовал, все равно спасибо :) ilhnctn
да, мы можем, это сработало для меня. @ ilis Nookaraju
0

ибутов:

Тип: ПользовательскийНазвание: Приписывается

Затем выберите левое / среднее / правое или выравнивание по ширине. Не использовать 'Выровнять натуральный.

Сейчас

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

работает, как и ожидалось, с ярлыком, не сокращенным (но всегда выровненным по центру ...).

Протестировано с XCode 6.3.

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

Метка любого RotatingButton, созданного в коде или на раскадровке, может вращаться без усечения.

[button.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
я использовал это для полноразмерной метки в моей кнопке frame.origin.y = 0 frame.size.height = self.bounds.size.height; dev_m
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
Я добавляю ту же проблему в swift, и мне потребовалось много времени, чтобы найти это решение. Поворот метки на кнопке может быть хитрым adeline_t
Добро пожаловать в stackoverflow. В дополнение к ответу выпредоставьте, пожалуйста, предоставьте краткое объяснение, почему и как это решает проблему. jtate
0

но пытались ли вы создать кнопку в виде горизонтальной кнопки (160 Вт x 60 часов), а затем вращать всю кнопку?

Смотрите мои заметки выше, Ян: D ArQangel
Ян. Вы'Я хотел бы так думать. Но, когда вы пробуете такой подход, это волнует каждого. (Вот с чего я и начал) ..... :) ArQangel

Похожие вопросы