2010-02-13 1 views
8

테이블보기의 각 셀에 UILabel을 추가하고 있습니다. 처음에는 문제가 없습니다. layer.cornerRadius을 사용하여 UILabel의 모서리를 돌릴 때 테이블 뷰를 스크롤하면 멈 춥니 다.각 셀에 cornerRadius가 포함 된 UILabel을 추가 할 때 UITableView가 크롤링합니다.

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = ([[managedObject valueForKey:@"color"] hasPrefix:@"FFFFFF"]) ? [UIColor blackColor] : color; 
label1.layer.cornerRadius = 10.0f; 
[cell addSubview:label1]; 
+0

[Tweetie가하는 방법] (http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/) (부드럽게 스크롤)을보고 싶을 수도 있습니다. – icktoofay

답변

7

본인이 직접 시도한 바 있으며 이동하는 모든 종류의보기에는 유용하지 않습니다. 모서리가 둥근 이미지를 만들어서 대신 라벨의 배경으로 추가해야합니다.

rouned 모서리 이미지에 대한 필요가 없습니다
+0

다른 크기의 레이블을 사용하면 이미지가 늘어나고 이미지에 지정된 구석 반경이 다른 것과 다르기 때문에이 방법은 실제로 좋은 해결책이 아닙니다. –

15

-이 질문에 fknrdcls하여 답을 참조하십시오

UILabel layer cornerRadius negatively impacting performance

는 기본적으로, 당신은 단순히 레이블 투명한 배경을 제공해야하고, backgroundColor로 추가하기 대신 레이어에. 그런 다음 maskToBounds을 비활성화하면 성능이 크게 향상됩니다. 그래서 코드가된다 : 나는뿐만 아니라 배경 색상을 이미지를 자르했다 때문에 UILabel의 트릭이 동작하지 않는 UIImageView에 대한

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = [UIColor clearColor]; 
label1.layer.backgroundColor=[UIColor whiteColor].CGColor; 
label1.layer.cornerRadius = 10.0f; 
label1.layer.masksToBounds = NO; 
label1.layer.shouldRasterize = YES; 
+0

+1이 솔루션이 정말 마음에 들지만 꼭 필요한 것은 일부 모서리뿐입니다. 반올림 **. 내 해결 방법은 : 상단 및 하단 오른쪽 모서리 만 '표시'하려면 'frame.origin.x'에 음수 값이있는 하위 뷰를 추가하고'cornerRadius'를 해당 레이어에 할당합니다. 누군가가 그 필요에 대한 더 나은 해결책을 발견하면, 나는 흥미 롭다. – anneblue

0

. 내가 찾은 가장 빠른 해결책은 내가 애니메이션을 만들 때마다 뷰의 부모를 래스터 화하는 것이 었습니다 (저는 슬라이딩 패널이 있습니다).

관련 문제