2010-12-07 4 views
9

UIView을 포함하는 UIScrollView이 있습니다. 사용자 정의 UIView 내부에서 볼 수있는 (즉, 잘리지 않는) 사각형을 알고 싶습니다.UIView의 보이는 사각형 얻기

quick-n-dirty 해결책은 사용자 정의 UIView가 부모가 UIScrollView 인 것으로 가정하고이를 통해 콘텐츠 크기를 얻는 것이지만 이러한 가정을 포함하지 않는 더 나은 솔루션을 찾고 있습니다.

답변

2

달성하려는 목표에 대해 더 많은 정보를 제공하면 도움이됩니다.

당신은 당신이 할 수있는 슈퍼 뷰의 크기를 알고 싶다면 :

CGRect superFrame = [self superview].frame; 
+0

없음. 내가 찾고있는 것은 전체 뷰의 프레임 rect가 아닌 뷰의 보이는 rect입니다. 예를 들어, UIView A의 일부가 다른 UIView B와 겹치면 사용자가 볼 수있는 UIView A의 가시 영역은 무엇입니까? –

17

이 트릭을하고있는 UIView에서 얻을해야

CGRect visibleRect = CGRectIntersection(self.frame, superview.bounds); 

사용을해야 하는가를 당신에게 슈퍼 뷰 (UIScrollView)에서 해당 뷰의 표시 섹션을 나타내는 사각형 (있는 경우). 나는 여기에 계층 구조에서 그들 사이에 아무런 견해도 없다고 가정하고 있지만, 있다면, 그 코드를 무시하는 것은 사소한 것이어야한다.

희망을 도울 수 있습니다. 작동하지 않습니다

+1

superview의 프레임이 superview의 좌표 공간에 있기 때문에 'superview.bounds'가 아니겠습니까? –

+0

@ 신난다 - o : 맞습니다. 내 원래 코드는 수퍼 뷰가 전체 화면 (0, 0 원점)을 채웠다 고 가정했지만 경계가 아닌 경우 사용할 수 있습니다. 업데이트 된 답변. – foslock

1

스위프트 3

extension UIView { 
    var visibleRect: CGRect? { 
     guard let superview = superview else { return nil } 
     return frame.intersection(superview.bounds) 
    } 
} 
관련 문제