수색…


Scrollview 예제의 복잡한 StackView

다음은 중첩 된 StackView로 수행 할 수있는 작업의 예입니다. 사용자에게 복잡한 사용자 인터페이스 요소 또는 정렬을 사용하여 지속적인 스크롤링 경험을 제공합니다.

Scrollview 예제의 복잡한 StackView

모호한 레이아웃 방지

Scrollviews 내부 StackViews에 대한 질문은 인터페이스 빌더에 대한 모호한 / heigh 경고에서 자주 발생합니다. 이 대답에 설명 된대로 다음 이 필요합니다.

  1. UIScrollView에 UIView (contentScrollView)를 추가하십시오.
  2. 이 contentScrollView에서 위쪽, 아래쪽, 왼쪽 및 오른쪽 여백을 0으로 설정합니다.
  3. 또한 중앙을 수평 및 수직으로 정렬하십시오.

중첩 된 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