UILabel ไม่ใช่ข้อความที่ย่อขนาดอัตโนมัติให้พอดีกับขนาดฉลาก


119

ฉันมีปัญหาแปลก ๆ นี้และฉันจัดการกับมันมานานกว่า 8 ชั่วโมงแล้ว .. ขึ้นอยู่กับสถานการณ์ฉันต้องคำนวณUILabelsขนาดแบบไดนามิก
เช่น
ฉันUIViewControllerได้รับเหตุการณ์และฉันเปลี่ยนUILabelsขนาด จากใหญ่ไปเล็ก ขนาดของฉันUILabelเล็กลงและฉันได้ขนาดที่ถูกต้อง แต่ข้อความในของฉันUILabelยังคงเหมือนเดิมขนาดตัวอักษรเดียวกันและอื่น ๆ ฉันต้องการแบบอักษรให้เล็กลงเพื่อให้ข้อความทั้งหมดพอดีกับไฟล์UILabel. คำถามคือจะทำอย่างไรให้ข้อความพอดีกับป้ายของฉันautoshrinkingหรืออะไรทำนองนั้น?

ในของฉันxib, UILabels autoshrinkมีการตรวจสอบยังหมายเลขของสายการตั้งค่าเป็น 0 และยังสตริงของฉันมีสัญลักษณ์บรรทัดใหม่ (\ n), และฉันได้เลือกlinebreakmodewordwrapไป อาจมีใครอยู่ในสถานการณ์เดียวกับฉันตอนนี้และช่วยฉันได้ไหม ฉันจะขอบคุณจริงๆ

ขอบคุณล่วงหน้า!

แก้ไข: UILabelขนาดตัวอักษรขั้นต่ำตั้งไว้ที่ 10


ขนาดตัวอักษรขั้นต่ำสำหรับฉลากที่คุณตั้งไว้คือเท่าใดโปรดเพิ่ม
AJPatel

คำตอบ:


160

ในกรณีที่คุณยังคงค้นหาวิธีแก้ปัญหาที่ดีกว่าฉันคิดว่านี่คือสิ่งที่คุณต้องการ:

ค่าบูลีนที่ระบุว่าควรลดขนาดฟอนต์หรือไม่เพื่อให้พอดีกับสตริงหัวเรื่องในสี่เหลี่ยมผืนผ้าขอบป้าย (คุณสมบัตินี้จะมีผลเมื่อnumberOfLinesคุณสมบัติถูกตั้งค่าเป็น 1 เท่านั้น)

เมื่อตั้งค่าคุณสมบัตินี้minimumScaleFactorต้องตั้งค่าด้วย (ค่าเริ่มต้นที่ดีคือ 0.5)

รวดเร็ว

var adjustsFontSizeToFitWidth: Bool { get set }

Objective-C

@property(nonatomic) BOOL adjustsFontSizeToFitWidth;

ค่าบูลีนที่ระบุว่าควรปรับระยะห่างระหว่างตัวอักษรให้พอดีกับสตริงภายในกรอบสี่เหลี่ยมของป้ายกำกับหรือไม่

รวดเร็ว

var allowsDefaultTighteningForTruncation: Bool { get set }

Objective-C

@property(nonatomic) BOOL allowsDefaultTighteningForTruncation;

แหล่ง


18
minimumFontSizeเลิกใช้งานใน iOS 6.0 ในฐานะ sidenote ใช้minimumScaleFactorแทน
lester

14
ใช่การย่อขนาดอัตโนมัติใช้ไม่ได้กับหลายบรรทัดใน UILabel ลองนึกภาพตามนี้: คุณมีข้อความที่มีหลายบรรทัดคุณต้องการย่อขนาดเพื่อให้ "พอดี" กับความกว้าง ดังนั้นควรย่อข้อความทั้งหมดให้พอดีในบรรทัดเดียวหรือคำอยู่ในบรรทัดเดียวกันแล้วย่อให้พอดีกับแต่ละความกว้าง? กรณีหลังเป็นกรณีที่พบบ่อยที่สุด แต่อย่าลืมว่าคำนั้นถูกกำหนดให้เรียงตัวกันเป็นหลายบรรทัด แม้ว่าจะปิดใช้งานการจัดเรียงข้อความโดยอัตโนมัติ แต่คุณจะต้องเผชิญกับข้อความแต่ละบรรทัดที่มีขนาดตัวอักษรต่างกันเพราะไม่ใช่ว่าทุกคำจะพอดีกับความกว้าง
lester

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

1
ใช่นั่นเป็นจุดที่ดี แต่อย่างไรก็ตามฉันคิดว่าถ้าฉันกำหนดจำนวนบรรทัดเป็น 0 นั่นเป็นคำสั่งที่ชัดเจนว่าอาจมีหนึ่งบรรทัดหรือมากกว่านั้นก็ได้ และเครื่องดื่มอัตโนมัติอาจถูกขัดขวางโดยหมายเลขบรรทัดที่ฉันเดา .. แต่ยังไงก็ตามขอบคุณสำหรับการล้างสิ่งต่างๆออก ฉันคิดว่าฉันทำอะไรผิด การจัดหมวดหมู่เป็นความคิดที่ดีฉันคิดว่าฉันจะทำอย่างนั้นในโครงการอื่นที่ฉันต้องการสิ่งนี้ ขอบคุณสำหรับความช่วยเหลือของคุณโชคดี;)
Lukas

4
@lester ควรย่อขนาดเพื่อให้สามารถมองเห็นข้อความทั้งหมดตามจำนวนบรรทัดที่ประกาศสำหรับป้ายกำกับตามขนาดปัจจุบัน ไม่จำเป็นต้องพยายามทำให้แต่ละเส้นมีขนาดแตกต่างกัน ฉันแปลกใจจริงๆที่คิดไม่ออก ดังนั้นถ้าฉันมี (อาจ) สายยาวเพื่อแสดงฉันสามารถทั้งมีหลายเส้นหรือมีมันอัตโนมัติขนาดไม่ใช่ทั้งสองอย่าง น่ารัก.
devios1

125

นี่คือวิธีที่ฉันทำให้ UILabel Autoshrinkทำงาน (โดยเฉพาะอย่างยิ่งสำหรับความสูงของตัวอักษรฉลากที่เหมาะสมในอุปกรณ์ 4s จาก 6s Plus Storyboard) ใน iOS 9.2, Xcode 7.2 ...

ใส่คำอธิบายภาพที่นี่

  • จำนวนบรรทัดคือ 0
  • เส้นแบ่ง: คลิป
  • Autoshrink: ขนาดตัวอักษรขั้นต่ำ 0.25

15
นี่คือส่วนผสม 3 อย่างที่จำเป็นเพื่อให้ฉลากหดตัวฉันไม่ได้ตั้งค่าตัวแบ่งเส้นคลิป นอกจากนี้หากติดกับป้ายกำกับอื่น ๆ (ซึ่งอาจลดขนาดอัตโนมัติด้วย) จำเป็นต้องกำหนดลำดับความสำคัญของการบีบอัด / การกอดหรือกำหนดความกว้างหรือความสูงอย่างชัดเจน นี่ควรเป็นคำตอบที่ยอมรับในปัจจุบัน
Korey Hinton

3
จำนวนบรรทัดทำเพื่อฉัน! ขอบคุณ
Michael

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

2
ฉันได้ลองใช้ตัวเลือกเดียวกันใน Xcode8 แล้วและพบว่าใช้งานไม่ได้ โปรดช่วยฉันหากใครมีความคิดเกี่ยวกับเรื่องนี้
พระพิฆเนศ

75

minimumFontSize เลิกใช้งานแล้วใน iOS 6

ดังนั้นใช้minimumScaleFactorแทนminmimumFontSize.

lbl.adjustsFontSizeToFitWidth = YES
lbl.minimumScaleFactor = 0.5

สวิฟต์ 5

lbl.adjustsFontSizeToFitWidth = true
lbl.minimumScaleFactor = 0.5

ตอบได้ดี. แก้ไขปัญหาของฉัน ขอบคุณ
อับดุลยาซีน

1
@AntonMatosov ไม่ไม่!
Iulian Onofrei

2
ใช่แล้ว (ตอนนี้) - หากคุณตั้งค่าตัวแบ่งบรรทัดเป็น Truncate Tail แทน Word Wrap ...
TheEye

21

ทางออกของฉันก็คือป้ายกำกับบูลีนปรับ FontSizeToFitWidth = YES; แต่. คุณต้องในอินเทอร์เฟซ Builder จึงจะเปลี่ยน Word Wrapping เป็น " CLIP " จากนั้นให้เขียนฉลากอัตโนมัติ สิ่งนี้สำคัญมาก


3
เฉพาะเมื่อฉันเปลี่ยนจาก "Word Wrap" เป็น "Clip" ทำให้ Autoshrink ทำงานให้ฉันได้
NicJ

เมื่อฉันเปลี่ยนการตัดคำเป็นคลิปฉันสามารถปรับขนาดในป้ายกำกับที่มีเส้นศูนย์ได้ เด็กชายคงจะดีถ้ามีการบันทึกไว้
DesignatedNerd

12

ใน Swift 3 (แบบเป็นโปรแกรม) ฉันต้องทำสิ่งนี้:

let lbl = UILabel()
lbl.numberOfLines = 0
lbl.lineBreakMode = .byClipping
lbl.adjustsFontSizeToFitWidth = true
lbl.minimumScaleFactor = 0.5
lbl.font = UIFont.systemFont(ofSize: 15)

5

คุณสามารถเขียนเช่น

UILabel *reviews = [[UILabel alloc]initWithFrame:CGRectMake(14, 13,270,30)];//Set frame
reviews.numberOfLines=0;
reviews.textAlignment = UITextAlignmentLeft;
reviews.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:12];
reviews.textColor=[UIColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:0.8]; 
reviews.backgroundColor=[UIColor clearColor];

คุณสามารถคำนวณจำนวนบรรทัดเช่นนั้นได้

CGSize maxlblSize = CGSizeMake(270,9999);
CGSize totalSize = [reviews.text sizeWithFont:reviews.font 
              constrainedToSize:maxlblSize lineBreakMode:reviews.lineBreakMode];

CGRect newFrame =reviews.frame;
newFrame.size.height = totalSize.height;
reviews.frame = newFrame;

CGFloat reviewlblheight = totalSize.height;

int lines=reviewlblheight/12;//12 is the font size of label

UILabel *lbl=[[UILabel alloc]init];
lbl.frame=CGRectMake(140,220 , 100, 25);//set frame as your requirement
lbl.font=[UIFont fontWithName:@"Arial" size:20];
[lbl setAutoresizingMask:UIViewContentModeScaleAspectFill];
[lbl setLineBreakMode:UILineBreakModeClip];
lbl.adjustsFontSizeToFitWidth=YES;//This is main for shrinking font
lbl.text=@"HelloHelloHello";

หวังว่านี่จะช่วยคุณ :-) รอการตอบกลับของคุณ


ดังนั้นหากกำหนดจำนวนบรรทัดให้กับป้ายข้อความของฉันข้อความจะทำการอัตโนมัติหรือไม่?
Lukas

หากเนื้อหาของคุณมีความกว้างไม่เพียงพอจะใช้เวลาในบรรทัดถัดไป
Birju

เฮ้ฉันทำตามที่คุณแนะนำ แต่มันไม่ได้ผลทำไมจำนวนบรรทัดถึงช่วยฉันได้
Lukas

คุณพูดถูกฉันลองแล้วมันไม่มีประโยชน์ แต่ฉันพบวิธีแก้ปัญหาสำหรับคุณเช่นนั้นคำตอบต่อไปของฉัน
Birju

lbl.adjustsFontSizeToFitWidth = yes; ทำงานให้ฉัน!
พัฒนา

4

ในที่สุดฉันก็ไม่พบคำตอบ และฉันคิดว่า autoshrink ใช้ไม่ได้กับหลายบรรทัด ฉันลงเอยด้วยการใช้คำแนะนำในลิงค์นี้: autoshrink บน UILabel ที่มีหลายบรรทัด

วิธีแก้ปัญหาคือการคำนวณความสูงของข้อความตามความกว้างที่กำหนดและหากข้อความมีขนาดใหญ่กว่าให้ย่อขนาดตัวอักษรจากนั้นทำแบบเดิมอีกครั้งจนกว่าความสูงจะเท่ากับหรือน้อยกว่าขนาดที่คุณต้องการ

ฉันไม่เข้าใจว่าทำไมจึงควรใช้งานได้ยากนัก หากฉันทำอะไรพลาดทุกคนยินดีที่จะแก้ไขฉัน :)


ตามคำตอบอื่น ๆ ที่นี่สิ่งสำคัญที่ขาดหายไปคือคุณต้องตั้งค่า Word Wrapping เป็น "Clip" มันใช้งานง่าย แต่จำเป็นต้องได้รับ UILabel เพื่อย่อขนาดอัตโนมัติในแบบที่คุณต้องการ ใช้งานได้กับ UILabel แบบหลายบรรทัด
Duncan Babbage

4

สำหรับ Swift 3 ที่ใช้ Xcode 8.2.1 (8C1002)

ทางออกที่ดีที่สุดที่ฉันพบคือตั้งค่าความกว้างคงที่ใน Storyboard หรือ IB บนป้ายกำกับ กำหนดข้อ จำกัด ของคุณด้วยการ จำกัด ระยะขอบ ใน viewDidLoad ของคุณเพิ่มบรรทัดของโค้ดต่อไปนี้:

override func viewDidLoad() {
            super.viewDidLoad()

            label.numberOfLines = 1
            label.adjustsFontSizeToFitWidth = true
            label.minimumScaleFactor = 0.5
        }

ข้อ จำกัด ของป้ายกำกับสำหรับระยะขอบ

ข้อ จำกัด ของป้ายความกว้างคงที่สำหรับระยะขอบ

ตัวตรวจสอบคุณสมบัติ

สิ่งนี้ทำงานได้อย่างมีเสน่ห์และไม่ล้นไปยังบรรทัดใหม่และย่อขนาดข้อความให้พอดีกับความกว้างของฉลากโดยไม่มีปัญหาแปลก ๆ และใช้งานได้ใน Swift 3


4

เป็นคำถามที่ดีเพราะตอนนี้รู้สึกว่าจะเป็นส่วนหนึ่งของUIKitฟังก์ชันในตัวหรือกรอบงานที่เกี่ยวข้องในตอนนี้ นี่คือตัวอย่างภาพที่ดีของคำถาม:

ภาพเคลื่อนไหวปรับขนาดตัวอักษร

ไม่มีวิธีง่ายๆ แต่เป็นไปได้แน่นอน วิธีหนึ่งในการทำเช่นนี้คือลองใช้ขนาดตัวอักษรที่แตกต่างกันโดยทางโปรแกรมจนกว่าคุณจะพบขนาดที่เหมาะสมใกล้เคียงกับขอบเขตของมุมมอง คุณสามารถทำได้ด้วยboundingRect()ฟังก์ชั่นหรือNSString NSAttributedStringตัวอย่างเช่น:

let string = "This is a test"
let infiniteSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height:CGFloat.greatestFiniteMagnitude)
let size = string.boundingRect(with: infiniteSize, options: [], attributes: [.font: UIFont.systemFont(ofSize: avgSize)] context: nil).size

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

หากคุณสนใจแค่การแสดงข้อความบนหน้าจอด้วยวิธีง่ายๆฉันได้พัฒนาการใช้งานที่มีประสิทธิภาพใน Swift ซึ่งฉันใช้ในแอปที่ใช้งานจริงด้วย เป็นUIViewคลาสย่อยที่มีการปรับขนาดแบบอักษรอัตโนมัติที่มีประสิทธิภาพสำหรับข้อความที่ป้อนรวมถึงหลายบรรทัด ในการใช้งานคุณเพียงแค่ทำสิ่งต่อไปนี้:

let view = AKTextView()
// Use a simple or fancy NSAttributedString
view.attributedText = .init(string: "Some text here")
// Add to the view hierarchy somewhere

แค่นั้นแหละ! คุณสามารถค้นหาแหล่งข้อมูลทั้งหมดได้ที่นี่: https://github.com/FlickType/AccessibilityKit

หวังว่านี่จะช่วยได้!


1
พ.ย. 2018: ปรากฏว่า FlickType และ AccessibilityKit เป็นแบบส่วนตัวหรือถูกลบออก
Chris Paveglio

3

ใน iOS 9 ฉันต้อง:

  1. เพิ่มข้อ จำกัด จากด้านซ้ายและขวาของป้ายกำกับไปที่ซุปเปอร์วิว
  2. ตั้งค่าโหมดแบ่งบรรทัดเป็นคลิปใน IB
  3. กำหนดจำนวนบรรทัดเป็น 1 ใน IB

มีคนแนะนำให้ตั้งค่าจำนวนบรรทัดเป็น 0 แต่สำหรับฉันสิ่งนี้ทำให้ป้ายกำกับไปหลายบรรทัด ...


นี้ได้เคล็ดลับสำหรับฉัน. ฉันเพิ่งเลือก a UILabelและ a UITextFieldในเซลล์แบบคงที่แล้วคลิก "แก้ไขปัญหาการจัดวางอัตโนมัติ" และ "เพิ่มข้อ จำกัด ที่ขาดหายไป" ทุกอย่างเรียงกัน แต่ Autoshrink จำเป็นต้องทราบระยะทางไปยังป้ายกำกับซึ่ง "Add Missing Constraints" ไม่ได้เพิ่มข้อ จำกัด สำหรับ
Adrian

2

ฉันคิดว่าคุณสามารถเขียนโค้ดร้องหลังจากจัดสรร init Label

UILabel* lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, 280, 50)];
lbl.text = @"vbdsbfdshfisdhfidshufidhsufhdsf dhdsfhdksbf hfsdh fksdfidsf sdfhsd fhdsf sdhfh sdifsdkf ksdhfkds fhdsf dsfkdsfkjdhsfkjdhskfjhsdk fdhsf ";
[lbl setMinimumFontSize:8.0];
[lbl setNumberOfLines:0];
[lbl setFont:[UIFont systemFontOfSize:10.0]];
lbl.lineBreakMode = UILineBreakModeWordWrap;
lbl.backgroundColor = [UIColor redColor];
[lbl sizeToFit];
[self.view addSubview:lbl];

มันทำงานกับฉันได้ดีใช้มัน


1
ขอบคุณ แต่สิ่งนี้จะไม่คำนวณหรือย่อขนาดตัวอักษรให้น้อยที่สุดตามที่ฉันเข้าใจและทำไมแบบอักษรขั้นต่ำของคุณจึงใหญ่กว่าปกติ?
Lukas

2

สองปีและปัญหานี้ยังคงอยู่ ...

ใน iOS 8 / XCode 6.1 บางครั้งฉันพบว่าของฉันUILabel(สร้างในรูปแบบUITableViewCellอัตโนมัติเปิดอยู่และข้อ จำกัด ที่ยืดหยุ่นจึงมีพื้นที่เหลือเฟือ) จะไม่ปรับขนาดตัวเองให้พอดีกับสตริงข้อความ

วิธีการแก้ปัญหาเช่นเดียวกับในปีก่อนหน้านี้คือการตั้งข้อความและแล้วsizeToFitโทร

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    . . .
    cell.lblCreatedAt.text = [note getCreatedDateAsString];
    [cell.lblCreatedAt sizeToFit];
}

(เฮ้อ.)


1

นี่คือวิธีการตั้งค่าข้อความต่อไปนี้ป้ายคือป้ายกำกับที่คุณต้องการให้มีเอฟเฟกต์ที่ต้องการตอนนี้ลองใช้โค้ดง่ายๆเหล่านี้:

    //SET THE WIDTH CONSTRAINTS FOR LABEL.
    CGFloat constrainedWidth = 240.0f;//YOU CAN PUT YOUR DESIRED ONE,THE MAXIMUM WIDTH OF YOUR LABEL.
 //CALCULATE THE SPACE FOR THE TEXT SPECIFIED.
    CGSize sizeOfText=[yourText sizeWithFont:yourFont constrainedToSize:CGSizeMake(constrainedWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
    UILabel *messageLabel=[[UILabel alloc] initWithFrame:CGRectMake(20,20,constrainedWidth,sizeOfText.height)];
    messageLabel.text=yourText;
    messageLabel.numberOfLines=0;//JUST TO SUPPORT MULTILINING.

เดี๋ยวก่อนขอบคุณสำหรับคำตอบของคุณ แต่ฉันไม่จำเป็นต้องคำนวณความสูงของป้ายฉันมีขนาดคงที่และขึ้นอยู่กับว่าแบบอักษรของฉันจะต้องเล็กลงหากจำเป็น
Lukas

1

ใช้ไม่ได้ถ้าnumberOfLines > 1 สิ่งที่ฉันทำมีเงื่อนไขเช่นนี้ -

if(lblRecLocation.text.length > 100)
    lblRecLocation.font = [UIFont fontWithName:@"app_font_name" size:10];

0

การมางานปาร์ตี้ช้า แต่เนื่องจากฉันมีข้อกำหนดเพิ่มเติมในการมีหนึ่งคำต่อบรรทัดการเพิ่มคำนี้จึงเป็นเคล็ดลับสำหรับฉัน:

label.numberOfLines = [labelString componentsSeparatedByString:@" "].count;

Apple Docsพูดว่า:

โดยปกติข้อความป้ายกำกับจะวาดด้วยแบบอักษรที่คุณระบุในคุณสมบัติแบบอักษร อย่างไรก็ตามหากคุณสมบัตินี้ถูกตั้งค่าเป็น YES และข้อความในคุณสมบัติข้อความมีขนาดเกินกรอบสี่เหลี่ยมของป้ายชื่อผู้รับจะเริ่มลดขนาดฟอนต์จนกว่าสตริงจะพอดีหรือถึงขนาดฟอนต์ต่ำสุด ใน iOS 6 และรุ่นก่อนหน้าคุณสมบัตินี้จะมีผลก็ต่อเมื่อคุณสมบัติ numberOfLines ถูกตั้งค่าเป็น 1

แต่นี่เป็นเรื่องโกหก ฉันโกหกคุณ! เป็นเรื่องจริงสำหรับ iOS ทุกเวอร์ชัน โดยเฉพาะสิ่งนี้จะเป็นจริงเมื่อใช้UILabelภายในUICollectionViewCellซึ่งขนาดจะถูกกำหนดโดยข้อ จำกัด ที่ปรับแบบไดนามิกที่รันไทม์ผ่านรูปแบบที่กำหนดเอง (เช่นself.menuCollectionViewLayout.itemSize = size )

ดังนั้นเมื่อใช้ร่วมกับadjustsFontSizeToFitWidthและminimumScaleFactorตามที่กล่าวไว้ในคำตอบก่อนหน้าการตั้งค่าทางโปรแกรมnumberOfLinesตามจำนวนคำช่วยแก้ปัญหา autoshrink ได้ การทำสิ่งที่คล้ายกันโดยพิจารณาจากจำนวนคำหรือแม้แต่จำนวนอักขระอาจให้ผลลัพธ์ที่ "ใกล้เคียงเพียงพอ"


0

ใน Swift 4 (แบบเป็นโปรแกรม):

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200.0, height: 200.0))
label.adjustsFontSizeToFitWidth = true
label.numberOfLines = 0

label.text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."

view.addSubview(label)

0

Swift 4, Xcode 9.4.1

วิธีแก้ปัญหาที่ใช้ได้ผลสำหรับฉัน: ฉันมีป้ายกำกับภายในเซลล์มุมมองคอลเลคชันและข้อความป้ายกำกับกำลังถูกตัดออก ตั้งค่าแอตทริบิวต์ดังต่อไปนี้บน Storyboard

Lines = 0
LineBreak = Word Wrap
Set yourlabel's leading and trailing constraint = 0 (using Autolayout)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.