오토레이아웃 비율로 나뉘어서 위치하는 방법이 있을까요?(ex. 디바이스의 세로 1/3지점에 위치)

오토레이아웃을 사용할때 서브 뷰가 디바이스의 1/3지점에 위치하도록 하는 방법이 있을까요 ?

2답변

  • 좋아요

    2

    싫어요
    채택취소하기
    1. 먼저 서브 뷰를 슈퍼뷰로 ctrl + 드래그하면 아래와 같은 메뉴가 나옵니다.
    2. 그리고 EqualHeights를 선택 이미지

    3. 생성한 EqualHeightsConstraints의 설정을 아래와 같이 1:3으로 한 후 이미지

    4. 1/3지점에 위치하고 싶은 서브뷰를 추가하여 위에서 추가한 서브뷰의 vertical margin을 0로 세팅하면 됩니다.

    • 서브 뷰는 그냥 의미 없는 View를 넣은건가요? - 2016.7.27 17:09
    • gompro89 2016.7.27 17:13
    • 만약 다른방법으로 한다면 SuperView의 top과 SubView의 top의 vertical Margin을 생성한 후 IBOutlet Constraints로 생성합니다. 그리고 IBOutlet을 생성한 소스내에서 constrains의 constant를 디바이스의 1/3의 값을 넣어주어도 됩니다. 그외의 방법은 저도 잘 모르겠네요. gompro89 2016.7.27 17:14
    • 위에서 말씀해주신대로 의미없는 view에 EqualHeightsConstraints만 1:3 으로 하면 x position, y position, x width를 추가하라고 나오는데 다른 옵션을 더 줘야하는게 있나요 ? - 2016.7.27 17:17
    • 의미없는 view는 질문자님께서 생성하고 싶은 view의 y 위치를 설정하기 위한 기준 view이므로 다른 옵션은 필요없습니다. gompro89 2016.7.27 17:26
  • 안녕하세요.

    아래 글에 상대적인 비율에 따라 위치를 잡는 방법이 나와 있습니다.

    https://medium.com/@lingostar/제-3장-multiplier를-이용한-위치-설정-1eb9147dd8e8#.tlvni6dwj

    간단히 설명드리면,

    Leading 과 Trailing을 기준으로 할때 Leading은 0 x Trailing 이며 Trailing은 1 x Trailing 이므로 0~ 1 사이의 소수를 입력하면 됩니다. Top과 Bottom을 기준으로 할 때 Top은 0 x Bottom 이며 Bottom은 1 x Bottom 이므로 0 ~ 1사이의 소수를 입력하면 됩니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.