UIButton'un metin hizalama merkezi nasıl yapılır? IB Kullanımı


140

Merkezi olarak IB'yi kullanarak UIButton unvanını ayarlayamıyorum. Başlığım çok satırlı.
Bunun gibi veriyor
resim açıklamasını buraya girin

Ama böyle istiyorum
resim açıklamasını buraya girin

Ben buna yer verdim ama bunu yapmak istemiyorum. Bazı durumlarda tam olarak hizalanmadığı ve hizalamayı ayarlamak için UILabel bir özelliği olduğunu biliyorum ama bunun için bir kod yazmak istemiyorum .. sadece IB her şeyi ayarlamak istiyorum.

Teşekkürler


7
Kumar Rathor - kod ile deneyinself.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari

1
@ Park Kodu ile bunu nasıl yapacağımı biliyorum ama istediğim 'IB' kullanarak ayarlamaktır.
Inder Kumar Rathore

Biliyorum, IB kullanarak ayarlamak istersiniz. Ancak bu özelliğe yalnızca kod yoluyla erişilebilir.
Sagar R.Konhari

IB üzerinden atıfta bulunarak erişilebilir ancak bunu kimin umurunda!
Youssef Moawad

Yanıtlar:


197

Bu tam olarak beklediğiniz şeyi yapacak:

Objective-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

İOS 6 veya üstü için

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

tyler53'ün cevabında açıklandığı gibi

Swift:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x ve üstü

myButton.titleLabel?.textAlignment = .center

1
İOS'un sonraki sürümlerinde NSTextAlignment oldu.
Sullivan

4
thas kodu çalışmıyor, en iyi cevap @joetjah myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
Soru , Interface Builder'da olduğu gibi IB'den açıkça bahsediyor . Bu değil o kodlama gerektirdiğinden, doğru cevap.
SwiftArchitect

1
Swift 4: myButton.titleLabel? .TextAlignment = .center
Lewis Black

'Merkez', 'merkez' olarak yeniden adlandırıldı
ModusPwnens

106

Hattı kullanın:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

Bu, içeriği yatay olarak ortalamalıdır.

Etiketin içindeki metni de merkeze ayarlamak istiyorsanız, şunu kullanın:

[labelOne setTextAlignment:UITextAlignmentCenter];

IB kullanmak istiyorsanız, burada XCode 4'e bağlı küçük bir örneğim var, ancak yeterli ayrıntı vermelidir (ayrıca, bu özellikler ekranının üstünde özellik sekmesini gösterir. XCode'da aynı sekmeleri bulabilirsiniz. 3.x): resim açıklamasını buraya girin


1
teşekkürler ... ama bunu IB aracılığıyla ayarlamak istemiyorum. :( bunu yapmamın son seçeneği ...
Inder Kumar Rathore

1
@Inder Kumar Rathore: Sorun değil. IB'de ayarlamak için etiketi tıklamanız ve ardından Nitelikler Denetçisinde Hizalamayı "Merkez" olarak ayarlamanız gerekir. IB'de (XCode 4), metnin hizalamasını gösteren 3 simge var. Açıkçası, o zaman orta olanı seçmelisin.
Joetjah

lütfen bana ekran görüntüsünü gönderebilir misiniz ... Bu Button'ın etiketi mi yoksa UILabel'ı kütüphaneden mi boşalttınız ??? Sanırım bu UILabel değil düğme etiketi
Inder Kumar Rathore

@Inder Kumar Rathore: Hey, eklediğim ekran görüntüsüne göz atın. Gerçekten kullandığınız etiketleri yanlış anladım, hala UIButton'daki metin yerine UILabel'i düşünüyordum. Ekran görüntüsü UIButton'a IB üzerinden nasıl hizalanacağını gösterir.
Joetjah

1
Düzenlememe izin vermedi, ancak NSTextAlignmentCenter, UITextAlignmentCenter'ın yerini aldı. Tho tam olarak aynı şeyi kastediyorlar. developer.apple.com/library/iOS/documentation/UIKit/Reference/…
OC Rickard

90

Solution1

Film şeridinde anahtar yolu ayarlayabilirsiniz

Metni çok satırlı başlığınıza ayarlayın, örn. hello + multiline

Metni bir sonraki satıra taşımak için + tuşuna basmanız gerekir .

resim açıklamasını buraya girin

Ardından anahtar yolunu ekleyin

titleLabel.textAlignmentolarak Numberve değer 1, 1aracı NSTextAlignmentCenter
titleLabel.numberOfLinesolarak Numberve değer 0, 0herhangi bir sayıda çizgi anlamına gelmektedir

resim açıklamasını buraya girin

Bu, IB / Xcode'a yansıtılmayacak, ancak çalışma zamanında merkezde olacaktır (cihaz / simülatör)

Xcode'daki değişiklikleri görmek istiyorsanız aşağıdakileri yapmanız gerekir: (bu adımları atlayabileceğinizi unutmayın)

  1. Düğmeyi tasarlanabilir hale getirmek için UIButton'u alt sınıflayın:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}

  2. Bu tasarlanabilir alt sınıfı değiştirdiğiniz düğmelere atayın:

Arayüz Oluşturucu'yu kullanarak düğmenin sınıfının nasıl değiştirileceğini gösterme

  1. Doğru yapıldıysa, Designables durumu "Güncel" olduğunda (birkaç saniye sürebilir) IB'deki görsel güncellemeyi göreceksiniz:

Interface Builder'daki tasarlanabilir ve varsayılan düğmeyi karşılaştırma



Solution2

Kodu yazmak istiyorsanız, uzun işlemi yapın

1. IBOutletdüğmesi için oluşturun
2. viewDidLoad'da kod yazın

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


Solution3

Yeni xcode sürümünde (benimki xcode 6.1) mülk özellikli başlığımız var
SeçAttributed sonra aşağıdaki metin ve basın merkezi seçeneğini

PS Metin ayarlamak için çok satırlı gelmiyordu

btn.titleLabel.numberOfLines = 0

resim açıklamasını buraya girin


Çözüm 3 için, Line Breaking = Clipmetni ekleyebilirsiniz , metni çok
satırlıya

Çözüm 3'ün en azından Xcode 11.3.1 ile sorunu var: düğmenin başlığını değiştirdiğimde çalışmıyor. kullandığımda btn.titleLabel.textAlignmentharika çalışıyor.
Brian Hong

27

UIButton için şunları kullanmalısınız: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

16

İos 8 ve Swift için

btn.titleLabel.textAlignment = NSTextAlignment.Center

veya

btn.titleLabel.textAlignment = .Center


13

Şu anda iOS 6 veya daha yeni bir sürümünü kullananlar için UITextAlignmentCenter kullanımdan kaldırıldı. Şimdi NSTextAlignmentCenter

ÖRNEK: mylabel.textAlignment = NSTextAlignmentCenter;Mükemmel çalışır.


12

Hızlı 4, xcode 9 için

myButton.contentHorizontalAlignment = .center

MyButton.titleLabel? .NumberOfLines = 0 ayarladım ve düğmenin içindeki etiketin ortalanmasına neden oldu, bu yüzden metni düğme içinde sola hizalamayı anlamaya çalışıyordum ve bu çalıştı, ancak .left olarak ayarlandı.
maxcodes

7

Btn'nin bir UIButton'a başvurduğunu varsayarsak, yatay olarak ortalanacak çok satırlı bir altyazıyı değiştirmek için iOS 6 veya sonraki sürümlerde aşağıdaki ifadeyi kullanabilirsiniz:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter iOS6'da kullanımdan kaldırıldı

Bunun yerine şu kodu kullanabilirsiniz:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


UIButton callee textAlignment için özellik yok.
Ravi


Button.titleLabel.textAlignment
OC Rickard



3

Aslında bunu arayüz oluşturucuda yapabilirsiniz.

Başlık'ı "İlişkilendirildi" olarak ayarlamalı ve ardından merkez hizalamayı seçmelisiniz.


Atfedilirse, Storyboard aracılığıyla metin rengini, yazı tipini vb. Ayarlayamayız.
Vineesh TP

3

Şunun gibi deneyin:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

2

Bunu film şeridinden yapabilirsiniz. Düğmenizi seçin. Satır Sonu 'Sözcük Kaydırma'yı ayarlayın,' Düz 'başlığınızı' İlişkilendirildi 'olarak ayarlayın. 'Ortaya hizalama'yı seçin. Bu bölüm önemlidir => Tıklayınız ... (Diğer) Düğmesi. Ve 'Karakter Sarma' için satır kesme modunu seçin.


1

UIButton, setTextAlignment özelliğini desteklemez. Bu nedenle, düğme metni hizalaması için setContentHorizontalAlignment ile gitmeniz gerekir

Senin referansın için

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.