iOS
StackView 자식이있는 UIScrollView
수색…
Scrollview 예제의 복잡한 StackView
다음은 중첩 된 StackView로 수행 할 수있는 작업의 예입니다. 사용자에게 복잡한 사용자 인터페이스 요소 또는 정렬을 사용하여 지속적인 스크롤링 경험을 제공합니다.
모호한 레이아웃 방지
Scrollviews 내부 StackViews에 대한 질문은 인터페이스 빌더에 대한 모호한 / heigh 경고에서 자주 발생합니다. 이 대답에 설명 된대로 다음 이 필요합니다.
- UIScrollView에 UIView (contentScrollView)를 추가하십시오.
- 이 contentScrollView에서 위쪽, 아래쪽, 왼쪽 및 오른쪽 여백을 0으로 설정합니다.
- 또한 중앙을 수평 및 수직으로 정렬하십시오.
중첩 된 StackView 내부의 내용으로 스크롤하기
스크롤에 대한 큰 문제 는 ScrollView 내부에 StackView 내부의 텍스트 필드를 표시하는 데 필요한 오프셋을 결정하는 것입니다.
MinY 프레임은 요소와 StackView의 맨 위 사이의 거리만을 고려하기 때문에 Textfield.frame.minY
의 위치 를 얻으려고하면 0이 될 수 있습니다 . 따라서 다른 모든 부모 스택 뷰 / 뷰 를 고려해야합니다.
이것에 대한 좋은 해결 방법은 다음과 같습니다.
1 - ScrollView 확장 기능 구현
extension UIScrollView {
func scrollToShowView(view: UIView){
var offset = view.frame.minY
var superview = view.superview
while((superview != nil)){
offset += (superview?.frame.minY)!
superview = superview?.superview
}
offset -= 100 //optional margin added on offset
self.contentOffset = CGPoint.init(x: 0, y: offset)
}
}
모든 부모보기 및 합계를 scrollview에 필요한 오프셋을 화면에 필요한보기를 제공하는 합계 간주합니다 (예를 들어, 사용자 키보드 뒤에있을 수없는 텍스트 필드)
사용 예 :
func textViewDidBeginEditing(_ textView: UITextView) {
self.contentScrollView.scrollToShowView(view: textView)
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow