2016-07-15 2 views
0

У меня есть TableViewCell и загрузка данных с помощью веб-службы (JSON), данные, хранящиеся в различном массиве и загрузке данных в виде таблицы. Я хочу, чтобы размер данных массива был большим и небольшим. так как будет управлять размером метки. Я попробовал примеры, но не делал динамическую метку. пожалуйста, помогите, спасибо.Как установить размер динамической метки в UITableViewCell

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [title count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //NSLog(@"tableview cell"); 
    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"event"]; 
    if (cell==nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 
    NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [img objectAtIndex:indexPath.row]]]; 
    UIImage* image = [[UIImage alloc] initWithData:imageData]; 
    cell.img.image =image; 

    cell.lbl_1.text=[NSString stringWithFormat:@"%@",[title objectAtIndex:indexPath.row]]; 

    cell.lbl_2.text=[NSString stringWithFormat:@"%@",[des objectAtIndex:indexPath.row]]; 
    cell.lbl_3.text=[NSString stringWithFormat:@"%@",[evnt_ary objectAtIndex:indexPath.row]]; 

    return cell; 
} 
+0

Дубликат: - http://stackoverflow.com/q/13190425/3515115 –

+1

http://www.appcoda.com/self-sizing-cells/ посмотреть ссылку –

+0

@balkaransingh please wait Я вижу эту ссылку –

ответ

1

Пожалуйста, проверьте UITableViewAutomaticDimension и использовать его как:

tableView.estimatedRowHeight = 44.0 
tableView.rowHeight = UITableViewAutomaticDimension 

Убедитесь, что ваши ограничения являются правильными.

+0

В ViewDidLoad Я пробовал, но не работает –

+0

Вы использовали heightforRowAtIndexpath, если да Затем верните UITableViewAutomaticDimension; –

+0

Убедитесь, что ваш ярлык имеет номерOfLines = 0 и Label LineBrakingMode для nslinebreakbywordwrapping –

0

Прежде всего, используйте пользовательскую ячейку для таблицыView. Если вы используете ярлык непосредственно в tableView, это вызовет проблемы с загрузкой при динамическом изменении его размера.

Затем в поле «cellForRowAtIndexPath» вы можете изменить его свойства. Например, если «TableCell» Ваш заказ клетка затем

TableCell *cell = (NBEServicesCell*)[tableView dequeueReusableCellWithIdentifier:"@yourIdentifier" forIndexPath:indexPath]; 

    //Assigning each row a number. 
[cell.yourLabel setFont:[UIFont fontWithName:@"Avenir-Heavy" size:14.0]]; 
cell.yourLabel.numberOfLines = 0; 
cell.yourLabel.lineBreakMode = NSLineBreakByWordWrapping; 
[cell.yourLabel sizeToFit]; 
cell.yourlabel.frame.size.width = newWidth; 
cell.yourlabel.frame.size.height = newHeight; 
+0

как писать newWidth и newHeight? –

+0

CGFloat newWidth = 100.0 – WasimSafdar

+0

Если вы решите свою проблему, пожалуйста, проголосуйте за мой ответ :) – WasimSafdar

0
CGSize maximumSize = CGSizeMake(width_specified, CGFLOAT_MAX); 


CGSize myStringSize = [myString sizeWithFont:myFont 
          constrainedToSize:maximumSize 
           lineBreakMode:self.myLabel.lineBreakMode]; 

Вы можете рассчитать высоту, требуемую строку, чтобы поместиться в звукозаписывающей компанией или TextView для заданной ширины.

Вам также необходимо указать шрифт для строки. то есть. шрифт, используемый в контейнере строки.

2

Вам необходимо написать [yourCell.yourlabel sizeToFit] после присвоения текста этой метке.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    yourCell.yourlabel.text = @"text whatever you want to set"; 
    [yourCell.yourlabel sizeToFit]; 
} 

также присвоить текст yourCell.yourlabel и писать [yourCell.yourlabel sizeToFit] в heightForRowAtIndexPath.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    yourCustomCell *yourCellObj = (yourCustomCell *)[self tableView:self.tableViewObj cellForRowAtIndexPath:indexPath]; 

    yourCellObj.yourlabel.text = @"text whatever you want to set"; 
    [yourCellObj.yourlabel sizeToFit]; 

    return (yourCellObj.yourlabel.frame.origin.y + yourCellObj.yourlabel.frame.size.height); 
} 
+0

В этом коде не используются обе строки _table_view.estimatedRowHeight = 100.0; // _table_view.rowHeight = UITableViewAutomaticDimension ;? –

+0

Я не уверен, но когда я пробовал оценивать RowHeight, иногда я получал неправильный вывод. – iHP

+0

Убедитесь, что вы установили ** yourCellObj.numberOfLines = 0 ** @ A.Kumawat – iHP

0

Вы должны получить динамическую ширину & высоту в зависимости от содержания (текста) этикетки, так что вы можете использовать следующую функцию вернет CGSize вы просто передать свой параметр метки.

- (CGSize) messageSizeExact:(UILabel *) msgLabel 
{ 

    CGRect textRect = [msgLabel.text boundingRectWithSize:(CGSize){280.0, CGFLOAT_MAX} 
              options:NSStringDrawingUsesLineFragmentOrigin 
             attributes:@{NSFontAttributeName:msgLabel.font} 
              context:nil]; 

    return textRect.size; 
} 
0

плз взять выход таблицы

@property (strong, nonatomic) IBOutlet UITableView *view_tableView; 


- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.view_tableView.estimatedRowHeight = 50; 
    self.view_tableView.rowHeight = UITableViewAutomaticDimension; 
    // Do any additional setup after loading the view, typically from a nib. 
} 


#pragma mark - TableView Delegate And DataSource 



-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 


    return 1; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"mycell"]; 
    UILabel *label =(UILabel *)[cell viewWithTag:5000]; 

    [email protected]"Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.2016-07-15 15:22:28.819 Time'nTask[257:14278] Notification settings registered2016-07-15 15:22:28.820 Time'nTask[257:14278] Successfully registered for remote notifications With device Token 68048cc293d695fd3220cf63da3baa685675126ecd72af0547b760ee31571b62"; 

    return cell; 
} 

Rember номер Набор меток линии = 0

enter image description here

Смежные вопросы