iOS | frame: CGRect

일어나 개발해야지·2023년 10월 13일

Swift

목록 보기
19/21

Intro

반복되는 UI를 해결하기 위해서 customView를 활용하기 시작했다. 이를테면 로그인화면을 만들때 InputBox 처럼 컴포넌트를 만들어 놓고 필요한 데이터만 바꿔서 UI를 구성하고 있다.

Question

변경이 필요한 값을 파라미터로 받아오기 위해서 init부분에 placeHolder 관련 코드를 처리해준다.

  init(frame: CGRect, placeHolder: String) {
        super.init(frame: frame)
            inputBox.placeholder = placeHolder
    }

값을 넘겨주는 곳에서는 placeHolder 뿐아니라, frame: CGRect 도 같이 넘겨주게 되는데
두가지 작성 방법이 있다는걸 발견했다.

   let passwordLine = {
        let line = CustomLine(frame: CGRect(), placeHolder: "Password")
        return line
    }()
    
    
    let loginButton = {
        let button = LoginButton(frame: CGRect(x: 0, y: 0, width: 0, height: 0), titleText: "로그인")
        return button
    }()

Answer

frame: CGRect 는 객체의 위치와 크기를 정하는데 사용되는 개념인데, frame의 type을 CGRect로 받겠다는 의미이다. CGRect의 구성요소인 x y width height 의 값을 받아서 view의 위치를 정의한다.
이런 관점에서 봤을 때 두 코드는 같은 의미이다.

frame: CGRect()
frame: CGRect(x: 0, y: 0, width: 0, height: 0)

Next Task

width: 0, height: 0 으로 표기 됬음에도 불구하고 내가 그리고자 하는 UI는 나타나고 있다. . 왜일까

0개의 댓글