ฉลากหลายสายของ iOS ในตัวสร้างอินเทอร์เฟซ


131

ฉันจะสร้างมัลติไลน์UILabelในตัวสร้างอินเทอร์เฟซสำหรับ iOS ได้อย่างไร ฉันลองแล้วUITextViewแต่มันไม่ค่อยตรงกับความต้องการของฉัน

ฉันจะเพิ่มหลายบรรทัด (ข้อความ) ในฉลากได้อย่างไร


คุณสามารถอธิบายได้ไหมว่าทำไม id ไม่ตรงกับความต้องการของคุณ? TextView แบบอ่านอย่างเดียวเหมือนกับป้ายกำกับหลายบรรทัด
Shreesh

ดูเหมือนจะไม่มีคุณสมบัติสีข้อความที่ไฮไลต์
Samuli Lehtonen

7
สำหรับคนอื่น ๆ เข้ามาเยี่ยมชมคำถามนี้อย่าทำตามคำตอบที่ได้รับการยอมรับของสายการตั้งค่า 5 nหรือ แทนที่จะตั้งค่าเป็น 0 (เรียงลำดับจากอินฟินิตี้) ตรวจสอบคำตอบของวีเจย์ด้านล่าง
GoodSp33d

คำตอบ:


178

คุณสามารถใช้numberOfLinesคุณสมบัติที่กำหนดจำนวนบรรทัดสูงสุดที่ป้ายกำกับสามารถมีได้ 1โดยค่าเริ่มต้นมัน การตั้งค่าให้0หมายถึงฉลากจะมีสายที่ไม่ จำกัด

คุณสามารถทำได้ในรหัส:

textLabel.numberOfLines = 5 // for example

หรือในตัวสร้างอินเทอร์เฟซ:


ฉันลองแล้วมันใช้งานได้เมื่อฉันเขียนป้ายกำกับ แต่เมื่อฉันกด Enter เพื่อยอมรับทั้งหมดจะดำเนินต่อไปในบรรทัดเดียว
Samuli Lehtonen

3
แล้วwidthป้ายของคุณคืออะไร?
akashivskyy

8
โอเคตอนนี้ได้เพิ่มส่วนสูงแล้ว ขอบคุณ!
Samuli Lehtonen

คุณสามารถตั้งค่า Lines เป็น 0 ได้ไม่ จำกัด บรรทัด
paulmelnikow

2
ดูคำตอบนี้ซึ่งอธิบายวิธีการพิมพ์ฉลากหลายบรรทัดลงใน IB: stackoverflow.com/a/992511/893113
paulmelnikow

117

กดControl+ Enterเพื่อเพิ่มบรรทัดใน UILabel ใน Interface Builder / Storyboard


2
ขอบคุณนั่นคือสิ่งที่ฉันพยายามทำ :)
mcont

นี่น่าจะเป็นทางออก!
SunnySonic

14
ทำได้ดีนี่. แต่ "Q" ไม่จำเป็นฉันคิดว่า
Rendel

1
@Oliver Logic มันไม่ได้ออกจาก Xcode ... คุณอ่านไม่ถูกต้อง เขาบอกว่า CONTROL + Q + ENTER (ไม่ใช่ CMD + Q) .. แต่ Rendel ถูกต้องเพียงแค่ CONTROL + ENTER เท่านั้นที่พอเพียงที่นี่
gaskbr

1
@ ตรรกะมันไม่ออกจาก Xcode ... คุณอ่านไม่ถูกต้อง เขาบอกว่า CONTROL + Q + ENTER (ไม่ใช่ CMD + Q) .. แต่ Rendel ถูกต้องเพียงแค่ CONTROL + ENTER เท่านั้นที่พอเพียงที่นี่
gaskbr

47

ขอบคุณ AppleVijay!

ยังเรียก sizeToFit เช่นนี้:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

ความสูงจะถูกคำนวณโดยอัตโนมัติ


11
หมายเหตุ: UILineBreakModeWordWrap เลิกใช้งานแล้วตั้งแต่ iOS6 ใช้ [label setLineBreakMode: NSLineBreakWordWrapping]; แทน.
John Feagans

5
ไม่มี "โดย" label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
ใช้ NSLineBreakMode ByWordWrapping แทน UILineBreakModeWordWrap เพื่อความรวดเร็ว
Deb

12

กำหนดความกว้างของฉลากตามที่คุณต้องการให้เล็กจากนั้นใช้ IB เพื่อตั้งค่าตัวแบ่งบรรทัดเพื่อตัดคำ

หรือใช้กับรหัสเช่นนี้

ฉันพบวิธีแก้ปัญหา

เพียงแค่เพิ่มรหัสต่อไปนี้:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

5

กำหนดจำนวนบรรทัดเป็นศูนย์สำหรับข้อมูลข้อความแบบไดนามิกซึ่งจะมีประโยชน์เมื่อข้อความของคุณแตกต่างกัน

โดยใช้โปรแกรม (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

ใช้ Inetrface Builder

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

หมายเหตุ: ไม่จำเป็นต้องตั้งค่าMinimum Font Scaleแต่ควรมีค่ามาตราส่วนขั้นต่ำเพื่อให้พอดีกับข้อความในกรอบฉลาก


2

จำนวนบรรทัดสามารถมองเห็นได้ใน IB โดยมีฟิลด์ Plain UILabels ตั้งค่าบรรทัดเป็น 0 มันจะสร้างหลายบรรทัดตามช่องว่างที่ให้ไว้กับฉลาก


1

ใน iOS7 (Xcode5) คุณตั้งค่าบรรทัดของ UILabel เป็น0สำหรับการป้อนข้อมูลหลายรายการในสตอรีบอร์ดได้ไม่ จำกัด
ที่สำคัญที่สุดคือการตั้งค่าheight of the UILabelสามารถถือบรรทัดของอินพุตที่คุณกำลังจะตั้งค่า


0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};

0

หากคุณตั้งค่าคุณสมบัติ numberOfLines เท่ากับ 0 ป้ายกำกับจะปรับตามจำนวนบรรทัดที่ต้องการของข้อความที่กำหนดโดยอัตโนมัติ


0

ฉันดิ้นรนกับเรื่องนี้มานานแล้ว ฉันแค่อยากให้ข้อความป้ายกำกับของฉันปรากฏในบรรทัดที่สอง แต่ไม่ว่าฉันจะทำอะไรมันก็จะล้นกล่อง UILabel สำหรับฉันการเปลี่ยนการปรับขนาดอัตโนมัติในตัวตรวจสอบขนาดได้ผล แก้ไขง่ายๆ

อาจมีใครบางคนคิดว่าเป็นประโยชน์ที่กำลังมองหาสิ่งที่คล้ายกัน


-2

สำหรับ X-Code 7.2.2

  1. - เลือก UILabel

  2. - ผู้ตรวจสอบคุณสมบัติ

  3. - ข้อความ - เลือกระบุแหล่งที่มา

หลังจากนี้คุณจะเห็นแอตทริบิวต์อื่น ๆ ที่คุณสามารถเพิ่มลงในป้ายกำกับของคุณซึ่งคุณสามารถค้นหาจำนวนเส้นได้ ซึ่งทำให้ฉลากของคุณมีหลายเส้น

ภาพ X-Code สำหรับ UILabel แบบหลายบรรทัด


จำนวนบรรทัดสามารถมองเห็นได้ใน IB ที่มีป้ายกำกับ UIL แบบธรรมดา
Graham Lea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.