2013-06-18 3 views
0

Я пытаюсь анимировать содержимое пользовательского UITableViewCell, перемещая метку справа, чтобы создать место для красного значка удаления. Движение работает отлично, но весь текст усекается, чего не предполагается, нет причин для меня, почему это происходит, потому что достаточно места. Это то, что это выглядит как в режиме редактированияUITableViewCell setEditing truncates label

enter image description here

Это мой код

-(void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    if (editing) { 
     self.image.alpha = 0.0; 
     self.textLabel.frame = CGRectMake(15, 0, 30, 44); 
    } else { 
     self.image.alpha = 1.0; 
     self.textLabel.frame = CGRectMake(10, 0, 30, 44); 
    } 
} 

Что я здесь делаю неправильно? Большое спасибо!

+0

попробуйте увеличить ширину метки ... CGRectMake (15, 0, 50, 44); –

+0

Когда я использую CGRectMake (15, 0, 50, 44), отображается только одна буква. Когда я использую второй подсказку, ярлык в ячейке с «значком удаления» не усекается, но все остальные метки в других ячейках все еще действуют. – Linus

+0

Вы делаете это для всех ярлыков или только для метки в ячейке с иконкой удаления? – Geek

ответ

1
-(void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    CGRect frame = CGRectZero; 

    if (editing) { 
     self.image.alpha = 0.0; 
     frame.origin = CGPointMake(15, 0); 

    } else { 
     self.image.alpha = 1.0; 
     frame.origin = CGPointMake(10, 0); 
    } 

    frame.size = [self.textLabel.text sizeWithFont:self.textLabel.font]; 
    self.textLabel.frame = frame; 
} 
+0

Вау, вот и все, ярлыки не усекаются. Большое спасибо! С приведенным выше кодом ярлык с пиктограммой удаления немного увеличивается. Я изменил следующее, чтобы исправить это: frame.origin = CGPointMake (15, 10); – Linus

2

Попробуйте использовать это:

self.textLabel.numberOfLines = 0; 
[self.textLabel sizeToFit]; 

Или вы можете попробовать это:

self.textLabel.center = CGPointMake(self.textLabel.center.x + 5, self.textLabel.center.y); 

Или вы можете попробовать это:

self.textLabel.frame = CGRectMake(self.textLabel.origin.x + 5, self.textLabel.origin.y, self.textLabel.bounds.size.width, self.textLabel.bounds.size.height); 

Или вы можете попробовать это:

CGSize textSize = [self.textLabel.text sizeWithFont:self.textLabel.font constrainedToSize:self.textLabel.bounds.size lineBreakMode:self.textLabel.lineBreakMode]; 
self.textLabel.frame = CGRectMake(self.textLabel.origin.x + 5, self.textLabel.origin.y, self.textLabel.bounds.size.width, textSize.height); 
+0

Спасибо за предложение, когда я использую этот код, ярлык в первой ячейке отображается в 2 (коротких) строках, а остальные метки все же усекаются. – Linus

+0

@ LinusAn см. Мое редактирование с другим вариантом. – Geek

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