UIView
을 포함하는 UIScrollView
이 있습니다. 사용자 정의 UIView
내부에서 볼 수있는 (즉, 잘리지 않는) 사각형을 알고 싶습니다.UIView의 보이는 사각형 얻기
quick-n-dirty 해결책은 사용자 정의 UIView가 부모가 UIScrollView
인 것으로 가정하고이를 통해 콘텐츠 크기를 얻는 것이지만 이러한 가정을 포함하지 않는 더 나은 솔루션을 찾고 있습니다.
UIView
을 포함하는 UIScrollView
이 있습니다. 사용자 정의 UIView
내부에서 볼 수있는 (즉, 잘리지 않는) 사각형을 알고 싶습니다.UIView의 보이는 사각형 얻기
quick-n-dirty 해결책은 사용자 정의 UIView가 부모가 UIScrollView
인 것으로 가정하고이를 통해 콘텐츠 크기를 얻는 것이지만 이러한 가정을 포함하지 않는 더 나은 솔루션을 찾고 있습니다.
달성하려는 목표에 대해 더 많은 정보를 제공하면 도움이됩니다.
당신은 당신이 할 수있는 슈퍼 뷰의 크기를 알고 싶다면 :
CGRect superFrame = [self superview].frame;
이 트릭을하고있는 UIView에서 얻을해야
CGRect visibleRect = CGRectIntersection(self.frame, superview.bounds);
사용을해야 하는가를 당신에게 슈퍼 뷰 (UIScrollView)에서 해당 뷰의 표시 섹션을 나타내는 사각형 (있는 경우). 나는 여기에 계층 구조에서 그들 사이에 아무런 견해도 없다고 가정하고 있지만, 있다면, 그 코드를 무시하는 것은 사소한 것이어야한다.
희망을 도울 수 있습니다. 작동하지 않습니다
superview의 프레임이 superview의 좌표 공간에 있기 때문에 'superview.bounds'가 아니겠습니까? –
@ 신난다 - o : 맞습니다. 내 원래 코드는 수퍼 뷰가 전체 화면 (0, 0 원점)을 채웠다 고 가정했지만 경계가 아닌 경우 사용할 수 있습니다. 업데이트 된 답변. – foslock
스위프트 3
extension UIView {
var visibleRect: CGRect? {
guard let superview = superview else { return nil }
return frame.intersection(superview.bounds)
}
}
없음. 내가 찾고있는 것은 전체 뷰의 프레임 rect가 아닌 뷰의 보이는 rect입니다. 예를 들어, UIView A의 일부가 다른 UIView B와 겹치면 사용자가 볼 수있는 UIView A의 가시 영역은 무엇입니까? –