วิธีการตั้งศูนย์ข้อความของ UIButton ใช้ IB


140

ฉันไม่สามารถตั้งชื่อ UIButton โดยใช้ IB เป็นศูนย์กลางได้ ชื่อของฉันคือหลายบรรทัด
มันให้เช่นนี้
ป้อนคำอธิบายรูปภาพที่นี่

แต่ฉันต้องการแบบนี้
ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้ให้พื้นที่ในนี้ แต่ฉันไม่ต้องการที่จะทำ เนื่องจากมันไม่ได้จัดตำแหน่งอย่างแน่นอนสำหรับบางกรณีและฉันรู้ว่ามีคุณสมบัติของ UILabel ในการตั้งค่าการจัดตำแหน่ง แต่ฉันไม่ต้องการเขียนโค้ดสำหรับสิ่งนั้น .. เพียงแค่ต้องการตั้งค่าทุกอย่างจาก IB

ขอบคุณ


7
Kumar Rathor - ลองด้วยรหัสself.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari

1
@ Spark ฉันรู้วิธีการใช้รหัส
Inder Kumar Rathore

ฉันรู้ว่าคุณต้องการตั้งค่าโดยใช้ IB แต่คุณสมบัติดังกล่าวสามารถเข้าถึงได้ผ่านทางรหัสเท่านั้น
Sagar R. Kothari

สามารถเข้าถึงได้ผ่าน IB โดยการทำให้เป็นผลมาจากใคร แต่ใครที่ใส่ใจ
Youssef Moawad

@YoussefSami ใช่คุณพูดถูกstackoverflow.com/a/5865500/468724
Inder Kumar Rathore

คำตอบ:


197

สิ่งนี้จะทำให้สิ่งที่คุณคาดหวัง:

Objective-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

สำหรับ iOS 6 หรือสูงกว่านั้น

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

ตามที่อธิบายไว้ในคำตอบของ tyler53

สวิฟท์:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x ขึ้นไป

myButton.titleLabel?.textAlignment = .center

1
มันได้กลายเป็น NSTextAlignment ใน iOS เวอร์ชันที่ใหม่กว่า
ซัลลิแวน

4
รหัส thas ไม่ทำงานคำตอบที่ดีที่สุดคือ @joetjahmyButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
คำถามอย่างชัดเจนกล่าวIBในขณะที่Interface Builder นี่ไม่ใช่คำตอบที่ถูกต้องเนื่องจากต้องมีการเข้ารหัส
SwiftArchitect

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

'Center' ถูกเปลี่ยนชื่อเป็น 'center'
ModusPwnens

106

ใช้สาย:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

สิ่งนี้ควรจัดกึ่งกลางเนื้อหา (แนวนอน)

และหากคุณต้องการตั้งค่าข้อความภายในฉลากให้อยู่กึ่งกลางให้ใช้:

[labelOne setTextAlignment:UITextAlignmentCenter];

ถ้าคุณต้องการใช้ IB ฉันมีตัวอย่างเล็ก ๆ ที่นี่ซึ่งเชื่อมโยงกับ XCode 4 แต่ควรให้รายละเอียดเพียงพอ (เช่นกันที่ด้านบนของหน้าจอคุณสมบัตินั้นจะแสดงแท็บคุณสมบัติคุณสามารถหาแท็บเดียวกันใน XCode ได้ 3.x): ป้อนคำอธิบายรูปภาพที่นี่


1
ขอบคุณ ... แต่ฉันไม่ต้องการตั้งค่าผ่าน IB :( ที่ตัวเลือกสุดท้ายของฉันทำแบบนั้น ...
อินเดอร์คูมาร์ Rathore

1
@Inder Kumar Rathore: ไม่มีปัญหา ในการตั้งค่าใน IB คุณควรคลิกที่ป้ายกำกับจากนั้นในตัวตรวจสอบแอททริบิวตั้งค่าการจัดตำแหน่งเป็น "กึ่งกลาง" ใน IB ของฉัน (XCode 4) มี 3 ไอคอนแสดงการจัดตำแหน่งข้อความ เห็นได้ชัดว่าคุณควรเลือกตรงกลางแล้ว
Joetjah

คุณช่วยส่งภาพหน้าจอมาให้ฉันได้ไหม ... นี่คือป้ายกำกับของปุ่มหรือคุณได้เจาะ UILabel จากห้องสมุด ??? ฉันคิดว่ามัน UILabel ไม่ใช่ป้ายกำกับของปุ่ม
Inder Kumar Rathore

@Inder Kumar Rathore: เฮ้ลองดูภาพหน้าจอที่ฉันเพิ่มเข้าไป ฉันเข้าใจผิดว่าคุณใช้ป้ายกำกับประเภทใดฉันยังคงคิดถึง UILabel แทนข้อความใน UIButton สกรีนช็อตแสดงวิธีการจัดแนวบน UIButton ผ่าน IB
Joetjah

1
จะไม่ให้ฉันแก้ไข แต่ NSTextAlignmentCenter มาแทนที่ UITextAlignmentCenter พวกเขาหมายถึงสิ่งเดียวกันทุกสรรพสิ่ง developer.apple.com/library/iOS/documentation/UIKit/Reference/…
OC Rickard

90

Solution1

คุณสามารถกำหนดเส้นทางหลักในกระดานเรื่องราว

ตั้งค่าข้อความเป็นชื่อหลายบรรทัดเช่นhello + multiline

คุณต้องกด+ เพื่อย้ายข้อความไปยังบรรทัดถัดไป

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นเพิ่มเส้นทางที่สำคัญ

titleLabel.textAlignmentเป็นNumberและความคุ้มค่า1, 1วิธีการNSTextAlignmentCenter
titleLabel.numberOfLinesเป็นNumberและความคุ้มค่า0, 0หมายถึงจำนวนของเส้นใด ๆ

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้จะไม่ปรากฏบน IB / Xcode แต่จะอยู่กึ่งกลางที่เวลาทำงาน (อุปกรณ์ / เครื่องมือจำลอง)

หากคุณต้องการเห็นการเปลี่ยนแปลงใน Xcode คุณต้องทำสิ่งต่อไปนี้: (จำไว้ว่าคุณสามารถข้ามขั้นตอนเหล่านี้ได้)

  1. คลาสย่อย UIButton เพื่อให้ปุ่มออกแบบได้:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}

  2. กำหนดคลาสย่อยที่ออกแบบได้ให้กับปุ่มที่คุณกำลังแก้ไข:

แสดงวิธีเปลี่ยนคลาสของปุ่มโดยใช้ Interface Builder

  1. Iff ถูกต้องแล้วคุณจะเห็นการปรับปรุงภาพใน IB เมื่อสถานะ Designables เป็น "ทันสมัย" (ซึ่งอาจใช้เวลาหลายวินาที):

การเปรียบเทียบปุ่มที่ออกแบบได้และเป็นค่าเริ่มต้นในเครื่องมือสร้างอินเตอร์เฟส



Solution2

ถ้าคุณต้องการที่จะเขียนรหัสแล้วทำกระบวนการยาว

1. สร้างIBOutletปุ่ม
2. เขียนโค้ดใน viewDidLoad

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


Solution3

ในรุ่นที่ใหม่กว่าของ xcode (ของฉันคือ xcode 6.1) เรามีสถานที่ให้บริการที่มีชื่อประกอบ
เลือกAttributedแล้วเลือกตัวเลือกข้อความและกดศูนย์ตัวเลือกด้านล่าง

ป.ล.ข้อความไม่มาหลายบรรทัดเพราะฉันต้องตั้งค่า

btn.titleLabel.numberOfLines = 0

ป้อนคำอธิบายรูปภาพที่นี่


สำหรับโซลูชันที่ 3 คุณสามารถเพิ่มLine Breaking = Clipได้มันจะแปลงข้อความเป็นหลาย
บรรทัด

โซลูชัน 3 มีปัญหาอย่างน้อยกับ Xcode 11.3.1: เมื่อฉันเปลี่ยนชื่อปุ่มมันไม่ทำงาน เมื่อฉันใช้btn.titleLabel.textAlignmentมันใช้งานได้ดี
Brian Hong



13

สำหรับบรรดาของคุณที่กำลังใช้ iOS 6 หรือสูงกว่า UITextAlignmentCenter ได้ถูกคัดค้าน ตอนนี้เป็น NSTextAlignmentCenter

ตัวอย่าง: mylabel.textAlignment = NSTextAlignmentCenter;ทำงานได้อย่างสมบูรณ์


12

สำหรับ swift 4, xcode 9

myButton.contentHorizontalAlignment = .center

ฉันตั้งค่า myButton.titleLabel? .numberOfLines = 0 และทำให้ป้ายกำกับอยู่ตรงกลางปุ่มดังนั้นฉันจึงพยายามหาวิธีจัดแนวข้อความทางซ้ายภายในปุ่มและใช้งานได้ตั้งค่าเป็นซ้าย
maxcodes

7

สมมติว่า btn อ้างถึง UIButton เพื่อเปลี่ยนคำบรรยายหลายบรรทัดให้อยู่กึ่งกลางแนวนอนคุณสามารถใช้คำสั่งต่อไปนี้ใน iOS 6 หรือใหม่กว่า:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter เลิกใช้แล้วใน iOS6

คุณสามารถใช้รหัสนี้แทน:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


ไม่มีคุณสมบัติสำหรับ UIButton callee textAlignment
Ravi

ไม่มีคุณสมบัติดังกล่าวสำหรับ UIButton ใน iOS
Jayprakash Dubey

เขาหมายถึง button.titleLabel.textAlignment
OC Rickard



3

ที่จริงคุณสามารถทำได้ในตัวสร้างส่วนต่อประสาน

คุณควรตั้งชื่อเป็น "Attributed" จากนั้นเลือกการจัดตำแหน่งกึ่งกลาง


หากเป็นผลมาจากเราไม่สามารถตั้งค่าสีข้อความแบบอักษร ฯลฯ ผ่านกระดานเรื่องราว
Vineesh TP


2

คุณสามารถทำได้จากกระดานเรื่องราว เลือกปุ่มของคุณ ตั้งค่าตัวแบ่งบรรทัด 'การตัดคำ' ตั้งชื่อของคุณ 'ธรรมดา' เป็น 'Attributed' เลือก 'การจัดตำแหน่งกึ่งกลาง' ส่วนนี้มีความสำคัญ => คลิกปุ่ม ... (เพิ่มเติม) และเลือกโหมดการขึ้นบรรทัดใหม่เป็น 'การตัดตัวอักษร'


1

UIButton จะไม่สนับสนุน setTextAlignment ดังนั้นคุณต้องไปกับ setContentHorizontalAlignment สำหรับการจัดแนวข้อความปุ่ม

การอ้างอิงของคุณ

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.