2012-06-03 4 views
2

저는 몇 주 동안이 문제로 고심하고 있습니다. 어쨌든, CALayer는 끔찍합니다. 그들은 너무 많은 지체를 야기하고 내 UI를 더 악화되게 만듭니다.CALayer 성능이 좋지 않습니까?

꽤 많이 나는 스크롤 코드의 3 개 라인에서 올 때 간단한 내가 효율 끝나가 한 jQuery과 및 지연 모두를 가지고 : 나는 NO로 setMaskToBounds을 설정하기 위해 노력했다

CALayer *imageLayer2 = [cell.imageView layer]; 
[imageLayer2 setMasksToBounds:YES]; 
[imageLayer2 setCornerRadius:10.0]; 

하지만, 둥근 모서리가 내 UIImageView에 적용되지 않습니다. 그것은이 문제가 iPads에 다음 아이폰에 대한 몇 가지 이상한 이유로 악화되고 있지만 지금 막 해결 방법을 찾는 데 아픈 것 같습니다. 또한이 코드는 내 cellForRowAtIndexPath에 있지만 항상 호출되는 것은 아니기 때문에 새 셀이 필요한 경우에만 실행됩니다.

어쨌든이 지연을 없애기 위해 CALayers를 사용하는 대신 무엇을 권하고 싶습니까?

감사합니다. 당신은 이미지 자체 덤비는 기꺼이 잘 경우

+0

처리 :

이 시도 위의 코드? – sergio

+0

이것이 성능 저하의 원인이되는 코드입니까? 당신은 그것을 주석 처리하고 점검 했습니까? – pasawaya

+0

@selge the cellForRowAtIndexPath –

답변

1
을 확인

나는 cellForRowAtIndex이 호출 될 때마다 이것을하고 있기 때문에 여기의 문제가 있다고 생각합니다. 마스크와 모서리 반경으로 이미 이미지를 저장하는 것이 좋습니다. 다시 실제로 필요할 때 이미지를 검색하고 다시 계산하지 말라고 모델에 요청합니다. cellForRowAtIndex은 합리적인 곳이며 비용이 많이 드는 작업은 피해야합니다.

0

, 당신이 라운드하는 구형 만들 수있는 다음 그대로 둥근 RECT 하나에 사각형의 이미지를 업데이트하는 경우, 를 사용,이 대답 How to mask a square image into an image with round corners in the iPhone SDK?

+0

나는 그 일을 시도해 보았고, 지연은 여전히 ​​존재했다. 다른 방법이 있습니까? –

+0

cellforrow에서 그 일을하지는 않습니까?보기에서 이미지를로드하고 캐시했는지 또는 나중에 사용하기 위해 디스크에 저장했는지 확인하십시오. –

1

UIImage의 CGImageRef를 사용하면 UIImage를 직접 사용하는 것보다 훨씬 빠르다는 것을 발견했습니다. 실제로 완전히 이미지 뷰를 제거 것이지만

CALayer *imageLayer2.contents = (id)[cell.imageView image].CGImage; 
[imageLayer2 setMasksToBounds:YES]; 
[imageLayer2 setCornerRadius:10.0]; 

그냥 어떤 방법에서 당신은 실행중인 CALayers 및 UIImages (접근성에 대한 상관 없어 당신을 가정)

관련 문제