سؤال

لدي برنامج طرفي مع مجموعة من الخلايا وأحاول الحصول على Uilabel لعرض أكثر من 3 خطوط. أقوم بتعيين LineBreakMode وعلق التغييرات بشكل مناسب، لكن لا يزال لا يعرض أكثر من ثلاثة أسطر. أي اقتراحات؟ تقوم خلية الجدول تلقائيا بضبط ارتفاعها لاستيعاب عدد السحر / الأسطر، ولكن النص يظهر ثلاثة أسطر ثم القطع الناقص (عند النقر فوق الخلية، فستذهب إلى طريقة عرض أخرى تظهر النص الكامل.

أدناه هو التعليمات البرمجية التي يجب أن أقوم بإنشاء وعرض Uilabel:

   self.commentLabel = [self newLabelWithPrimaryColor:[UIColor blackColor] selectedColor:[UIColor whiteColor] fontSize:12.0 bold:YES];
    self.commentLabel.textAlignment = UITextAlignmentLeft; // default
    self.commentLabel.lineBreakMode = UILineBreakModeWordWrap;
    self.commentLabel.numberOfLines = 0; // no limit to the number of lines 
    [myContentView addSubview:self.commentLabel];
    [self.commentLabel release];

أود أن يتم عرض التعليق بأكمله في خلية الجدول.

هل كانت مفيدة؟

المحلول

يبدو أن مستطيل التسمية صغير جدا بحيث لا يناسب جميع النص ... يجب أن تجعل المستطيل أكبر من أجل عدم عرض علامة الحذف وعرض النص بأكمله

نصائح أخرى

مع مفهوم تصميم Autolayout، لا تحدد قيود الارتفاع على Uilabel وتعيين لا. من الخطوط كما 0.

تعتني Autolayout تلقائيا بالارتفاع الديناميكي للتسمية وفقا لنص التسمية. إذا كان التسمية له نص سطر واحد، فستحتل مساحة سطر واحد فقط. وإذا كان التسمية لديها أكثر من سطر واحد، فسيتم تغيير حجم التسمية وفقا لحجم النص وعدد الخطوط المطلوبة لعرض النص.

  • تعيين وتنفيذ DataSource TableView والمندوب
  • تعيين UITableViewAutomaticDimension إلى Rowheight وتقدير
  • تنفيذ أساليب المندوب / مصدر البيانات (أي heightForRowAt وإرجاع قيمة UITableViewAutomaticDimension لذلك)

-

ج موضوعية:

// in ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

  @property IBOutlet UITableView * table;

@end

// in ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.table.dataSource = self;
    self.table.delegate = self;

    self.table.rowHeight = UITableViewAutomaticDimension;
    self.table.estimatedRowHeight = UITableViewAutomaticDimension;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

انظر إلى هذه الإجابة: ضبط Uilabel ديناميكيا في حدود القيميتين؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top