Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- uitableview
- Clean Code
- map
- swift documentation
- Protocol
- MVVM
- SWIFT
- Xcode
- HIG
- collectionview
- swiftUI
- UITextView
- 리펙터링
- 애니메이션
- ios
- Observable
- 리팩토링
- clean architecture
- rxswift
- Refactoring
- ribs
- 스위프트
- 리펙토링
- Human interface guide
- RxCocoa
- uiscrollview
- combine
- UICollectionView
- 클린 코드
- tableView
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 특정 CGRect 포함, 특정 뷰 포함 확인 방법, 화면에 특정 뷰가 보이는지 확인 방법, intersects(_:), contains(_:) 본문
iOS 응용 (swift)
[iOS - swift] 특정 CGRect 포함, 특정 뷰 포함 확인 방법, 화면에 특정 뷰가 보이는지 확인 방법, intersects(_:), contains(_:)
jake-kim 2023. 10. 18. 01:27특정 rect 영역이 포함되는지 확인 방법
- 진한 회색뷰이 얕은 회색뷰에 완전히 포함되는지 확인하는 방법?
- 오렌지색 뷰가 회색뷰에 걸쳐있는지 확인하는 방법?
- contains(_:) 완전히 포함되었는지 확인이 가능
extension CGRect {
public func contains(_ rect2: CGRect) -> Bool
}
- 두 개가 걸쳐져 있는지 확인 가능
extension CGRect {
public func intersects(_ rect2: CGRect) -> Bool
}
- 아래처럼 사용
containerView.frame.intersects(orangeView.frame) // true
containerView.frame.contains(orangeView.frame) // false
containerView.frame.contains(contentView.frame) // true
응용) 화면에 특정 뷰가 보이는지 확인 방법
- intersects를 활용하면 화면에 특정 뷰가 조금이라도 보이는지 확인이 가능
- contains를 활용하면 화면에 특정 뷰가 모두 보이는지 확인이 가능
- *convert(_:to:) 함수를 이용하여 특정 뷰를 window기준으로 잡은 rect값을 intersects나 contains 함수를 사용하여 비교가 가능
- * convert(_:to:) 함수 개념: 이전 포스팅 글 참고
- 아래처럼 extension으로 사용이 가능
extension UIView {
var visible: Bool {
guard window != nil else { return false }
let viewFrame = convert(bounds, to: nil)
let screenBounds = UIScreen.main.bounds
return viewFrame.intersects(screenBounds)
}
var fullyVisible: Bool {
guard window != nil else { return false }
let viewFrame = convert(bounds, to: nil)
let screenBounds = UIScreen.main.bounds
return screenBounds.contains(viewFrame)
}
}
* 전체 코드: https://github.com/JK0369/ExVisible
* 참고
- https://developer.apple.com/documentation/coregraphics/1454747-cgrectintersectsrect
- https://developer.apple.com/documentation/coregraphics/1454186-cgrectcontainsrect
'iOS 응용 (swift)' 카테고리의 다른 글
Comments