2013-06-18 3 views
0

레이블을 오른쪽으로 이동하여 빨간색 삭제 아이콘의 공간을 만들어 사용자 지정 UITableViewCell의 내용에 애니메이션을 적용하려고합니다. 운동은 잘 작동하지만 전체 텍스트가 잘리지 않는데, 충분한 공간이 있기 때문에 왜 그렇게하는지 이유가 없습니다. 이것은 내가 잘못 여기서 뭐하는 거지이 내 코드UITableViewCell setEditing 잘림 레이블

-(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); 
    } 
} 

입니다

enter image description here

편집 상태의 모습입니다? 고마워요!

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

또는 당신이 시도 할 수 있습니다 :

+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.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

@ Linus 다른 옵션으로 내 편집을보십시오. – Geek

관련 문제