>

100과 왼쪽 120, 오른쪽 120의 UIView가 있다면 첫 번째 항목과 두 번째 항목 관계가 정확히 어떻게 작동하는지. Apple 문서를 살펴본 후 각 관계는식이 다음과 같은 선형 방정식을 갖습니다.

firstItem.firstItemAttribute == secondItem.secondItemAttribute * multiplier + constant

관계에 대한최상위제약 조건에 대한이 방정식으로

  • 첫 번째 항목안전 영역. 리딩
  • 관계=
  • 두 번째 항목 =MyView.Leading
  • 일정한120
방정식으로 첫 번째 항목과 두 번째 항목을 이해했습니다. 그러나되감기를 수행 할 때 두 번째 항목 상수가-120으로 변경되고 변경 후에 레이아웃이 적용되지 않는 경우 문제가 발생합니다. 왜 부정적인 영향을 미치지 않으며 그 용도는 무엇입니까? Xcode는이 속성을 전환해야 할 때 선행, 중앙, 후행과 같은 FirstItem 및 SecondItem에 대한 속성 집합을 제공합니다.


  • 답변 # 1

    첫 번째 항목 =안전 영역. 리딩--- 안전 영역의 "왼쪽 가장자리"

    두 번째 항목 =MyView.Leading---보기의 "왼쪽 가장자리"

    따라서안전 영역의 "왼쪽 가장자리"에서보기의"왼쪽 가장자리"120 와 같습니다. 또는 귀하의 의견은 120 입니다.  pts에서안전 지역 (오른쪽).

    첫 번째 항목 =MyView.Leading---보기의 "왼쪽 가장자리"

    두 번째 항목 =안전 영역. 리딩--- 안전 영역의 "왼쪽 가장자리"

    따라서보기의 "왼쪽 가장자리"안전한 영역의 "왼쪽 가장자리"-120 와 같습니다. 또는 안전 영역의 왼쪽 가장자리는 -120 입니다.  pts시작보기 (왼쪽).

    -120 를 변경하면   120 로 안전 지역 +120 의 왼쪽 가장자리를 넣어 것입니다  보기 왼쪽 가장자리의 pts (오른쪽 120 pts)는 화면에서 왼쪽으로보기를 밀어냅니다.

    수정 :

    좀 더 명확하게하기 위해 ...

    "SafeArea.Leading->myView.Leading"을 사용하면"안전 영역의 왼쪽 가장자리에서 myView의 왼쪽 가장자리를 120pt로 넣습니다"

    이를 "myView.Leading->SafeArea.Leading"으로 바꾸면"SafeArea의 왼쪽 가장자리를빼기mypt의 왼쪽 가장자리에서 120 포인트"라고 말합니다..

    <시간>

    일반적으로 Interface Builder를 사용할 때는 요소를 시각적으로 배치하고 IB가 제약 조건을 정의하는 방법을 알고 있기 때문에 순서 만 내버려 둡니다.

    자세한 차이점은참조코드에서 제약 조건을 설정할 때입니다.

    예를 들어, 다음과 같이 포함 된 뷰 (파란색) 안에 서브 뷰 (빨간색)를 넣고 4면 모두에 20pt 패딩을 넣습니다.

    코드는 다음과 같습니다 :

       let myContainerView = UIView()
        myContainerView.translatesAutoresizingMaskIntoConstraints = false
        myContainerView.backgroundColor = .blue
        // add container view to self view
        view.addSubview(myContainerView)
        // constrain container view center X and Y, width and height both 240-pts
        NSLayoutConstraint.activate([
            myContainerView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0.0),
            myContainerView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0.0),
            myContainerView.widthAnchor.constraint(equalToConstant: 240.0),
            myContainerView.heightAnchor.constraint(equalToConstant: 240.0),
            ])
        let myInnerView = UIView()
        myInnerView.translatesAutoresizingMaskIntoConstraints = false
        myInnerView.backgroundColor = .red
        // add inner view to container view
        myContainerView.addSubview(myInnerView)
        // constrain inner view with 20-pts padding on all four sides
        NSLayoutConstraint.activate([
            // top and left are 20-pts from superview top and left
            myInnerView.topAnchor.constraint(equalTo:
                myContainerView.topAnchor, constant: 20.0),
            myInnerView.leadingAnchor.constraint(equalTo:
                myContainerView.leadingAnchor, constant: 20.0),
            // bottom and right are *minus* 20-pts from superview bottom and right
            myInnerView.bottomAnchor.constraint(equalTo:
                myContainerView.bottomAnchor, constant: -20.0),
            myInnerView.trailingAnchor.constraint(equalTo:
                myContainerView.trailingAnchor, constant: -20.0),
            ])
    
    

    내부 뷰의트레일 링아래제약 조건은 음수 여야합니다. 컨테이너보기의 끝과 아래쪽 가장자리에서멀리 떨어져20pt가 되길 원합니다.

관련 자료

  • 이전 php - 공통 값이있는 경우 배열 내부의 요소 그룹화
  • 다음 java - 문장에서 반복되는 단어를 찾기위한 정규식