2017-01-10 3 views
0

Я разрабатываю чат-приложение в IOS с помощью Objective-c. Функциональность мудрый каждый это нормально, но я с некоторым трудом в дизайне.Общение с пользовательским интерфейсом Objective-c

Вот мой выход enter image description here

Я создал два идентификатора ячейки разности типа сообщения в стороне таблицы view.like этого

enter image description here

И тогда я изменить его в cellForRowAtIndexPath. Как это

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableMainChatting.delegate = self; 
    self.tableMainChatting.dataSource = self; 
    self.navigationBarTitle.topItem.title = self.visitorName; 
    self.tableMainChatting.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 



    // invoke visitor selected 
    delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [delegate startChatting:self.visitorID VisitorName:self.visitorName VisitorTime:self.visitorStartTime]; 
    [delegate InvokeGetCurrentChattingHistory:self.visitorID]; 


} 


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


    MessageItemObject *item = [messagesList objectAtIndex:indexPath.row]; 

    if ([item.Type isEqualToString:@"Visitor"]) { 

     NSString *cellIdentifier = @"identify_visitor_chat"; 
     UITableViewCell *cell = [self.tableMainChatting dequeueReusableCellWithIdentifier:cellIdentifier]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     } 

     UILabel *visitorMessage = (UILabel *)[cell viewWithTag:5030]; 
     visitorMessage.text = item.Messagetext; 
     visitorMessage.layer.masksToBounds = YES; 
     visitorMessage.layer.cornerRadius = 5.0; 



     visitorMessage.frame =CGRectMake(visitorMessage.frame.origin.x, visitorMessage.frame.origin.y, 250, 60); 
     visitorMessage.font = [UIFont fontWithName:@"RobotoSlab-Bold" size:10]; 
     visitorMessage.numberOfLines=0; 
     visitorMessage.lineBreakMode=NSLineBreakByWordWrapping; 

     [visitorMessage sizeToFit]; 



     UILabel *messageTime = (UILabel *)[cell viewWithTag:5031]; 
     messageTime.text = item.MessageTime; 
     return cell; 



    } else { 
     NSString *cellIdentifier = @"identify_operator_chat"; 
     UITableViewCell *cell = [self.tableMainChatting dequeueReusableCellWithIdentifier:cellIdentifier]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     } 

     UILabel *visitorMessage = (UILabel *)[cell viewWithTag:5032]; 
     visitorMessage.text = item.Messagetext; 
     visitorMessage.layer.masksToBounds = YES; 
     visitorMessage.layer.cornerRadius = 5.0; 


     UILabel *messageTime = (UILabel *)[cell viewWithTag:5033]; 
     messageTime.text = item.MessageTime; 

     return cell; 
    } 

} 

Я хочу, чтобы удалить все разделительные линии, а также я хочу, чтобы установить Hight метку в зависимости от его текста.

+0

Использование этого метода. - (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath –

ответ

1

Вам необходимо установить UITableViewCell heightForRowAtIndexPath на UITableViewAutomaticDimension.

Используйте следующие методы:

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

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return 100; //Any default size of the cell 
} 

Также вы должны установить AutoLayout для тех, кто чат UILabel что важно. Следуйте инструкциям по автозапуску от here.

+0

hy tnx. но все же есть разделитель строк внутри идентификатора ячейки –

+0

Напишите 'tableView.separatorStyle = UITableViewCellSeparatorStyleNone;' в 'viewDidLoad' или' viewWillAppear'. – Poles

+0

Также, пожалуйста, подтвердите или подтвердите, если этот ответ вам помог. – Poles

0

Если вы предназначаться для устройств перед прошивкой 8.0, вы можете рассчитать динамическую высоту ячейки, используя эту функцию

-(CGFloat)getLabelHeightFor:(NSString*)text font:(UIFont*)font width:(CGFloat)width { 
    UILabel *lbl = [[UILabel alloc] init]; 
    lbl.frame = CGRectMake(0, 0, width, 0); 
    lbl.numberOfLines = 0; 
    lbl.font = font; 
    lbl.text = text; 
    [lbl sizeToFit]; 

    return lbl.frame.size.height; 
} 

И в контроллере

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    CGFloat height = [self getLabelHeightFor:MESSAGE font:YOUR_FONT width:LABEL_WIDTH]; 
    return height; 
} 
Смежные вопросы