-
layoutAttributesForElementsInRect 사용시 성능문제👻 iOS 2015. 3. 13. 19:04
UICollectionViewFlowLayout 을 이용해 변형된 레이아웃을 구성하고자 할 때
layoutAttributesForElementsInRect 을 이용해서 필터링된 레이아웃 속성 정보를 뽑아야 하는데..
Array.filter를 사용해보니 스크롤시에 버벅이는 현상이 난다.
override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? { // layoutAttributes 는 Array로 선언 returnlayoutAttributes.filter { (attributes) -> Bool in return CGRectIntersectsRect(rect, attributes.frame) } }
아래와 같이 NSArray(NSMutableArray)를 이용하면 성능 향상을 볼 수 있음.
override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? { // layoutAttrAry는 NSMutableArray로 선언 return layoutAttrAry.filteredArrayUsingPredicate(NSPredicate(block: { (evaluatedObject: AnyObject!, bindings: [NSObject : AnyObject]!) -> Bool in return CGRectIntersectsRect(rect, evaluatedObject.frame) })) }