Q. 어차피 카드 이미지의 크기는 모두 똑같고, 계산해놓은 카드 이미지 사이즈을 알 수 있기 때문에 CardImageView에 속성을 지정해놓은것처럼 사이즈도 fix시키고, VC에서는 origin만 알려주고 생성하면 더 효율적이지 않을까?
<예상되는 문제점>
지금은 cardSize라는 computed property가 VC에 있기때문에, VC의 루트 뷰 frame 기준으로 카드의 가로, 세로 길이를 구한 것을 코드만 봐도 알 수 있다. 하지만 만약 이 값을 CardImageView내부에서 바로 상수로쓰면, 다른 사람은 이 값이 어떻게 구해진건지 알 수 없다.
또한 루트뷰에 추가되는 서브뷰이므로 사이즈를 계산하고 부여하는게 VC에서 바로 볼 수 있는게 더 자연스러울 수도 있다.
또한 만약 디바이스가 변경된다면 루트뷰의 frame이 달라지기때문에 상수로 선언한 카드사이즈가 다른 디바이스 뷰 상에서는 맞지 않을 수 있다.
매번 subView의 크기를 루트뷰의 frame에 따라 계산해야한다면, subView에서는 superView의 frame을 알아와서 계산하고, 계산한 값을 init()내부에서 size로 fix할 수 있는지? 만약 가능하다면 이 방법이 자연스러운건지?_?
convenience이 init내에 CGSize값을 고정해놓으면 물론 질문대로 사용할 수도 있다.
하지만 frame은 superview를 기준으로 구하는 origin이 필요한 값이기때문에, frame자체를 스스로 계산할 수는 없다. fix된 사이즈를 subview가 갖고있다고해도 슈퍼뷰에서 위치를 지정해주는 코드를 작성해야하기때문에, 꼭 저 방법이 더 효율적이라고 할 수는 없다. 특히 superView를 관리하는 ViewController의 코드가 더 짧아진다는 것은 해당 방법을 사용했을때 따라오는 장점이라고 하기엔 애매한 부분이 있다.
어차피 frame은 superview를 기준으로 구하는 값이기때문에 superview에서 subview로 추가할 UIView를 만들면서 속성을 지정하는게 더 자연스럽다.
Q. 어차피 카드 이미지의 크기는 모두 똑같고, 계산해놓은 카드 이미지 사이즈을 알 수 있기 때문에 CardImageView에 속성을 지정해놓은것처럼 사이즈도 fix시키고, VC에서는 origin만 알려주고 생성하면 더 효율적이지 않을까?
<예상되는 문제점>