이제 코드를 넘어 Xcode로 어플을 구현할 때 사용하는 UI Components에 대해서 공부를 하고 있다.
그저 구글링해서 복붙하던 느낌과 달리 더 세세하게 배우고 있는 기분이라 좋다!
하지만 그만큼 궁금한 점들이 많이 생기고 있길래
머리 속에서 없어지기 전에 적어 내려가고 하나씩 해결해보고자 한다.
궁금증
IBOutlet은 StoryBoard Layout에 UI Component를 연결하고,
해당 Component의 속성을 바꿀 수 있도록 접근을 할 수 있다.
반면, IBAction은 특정 코드를 실행할 수 있도록 (triggering code) 행동을 지정한다. [링크]
단순하게 생각하면 그렇게 보일 수 있지만, 우리가 만드는 어플의 환경을 생각해보자. 모바일에서는 pressed와 touch의 차이점이 존재한다.
touchDownInside는 말그대로 pressed를 의미하는데, 버튼처럼 한번 눌렀다가 손을 놓는 행동을 의미하지 않는다. 따라서 touchUpInside가 버튼을 눌렀다 때는 행동을 의미한다. [링크]
selector은 objective-c 언어의 메서드를 가르키는 타입이라고 한다. #selector 키워드를 통해 Selector 구조체를 만든다고 하는데, 우리가 알고 있는 것과 달리 Objective-c는 객체를 별도의 클래스 생성없이 만들 수 있다고 한다. 따라서 #selector(method)는 구조체로 Selector을 만들어 메서드를 실행하는 것과 같다. [링크]
# 추가 서치 필요
간단하게 이해하기로는 둘 다 동일한 역할을 하는 것은 맞다.
IBAction은 단순히 Interface Builder에게 '나 함수다!' 라는 것을 알리는 코드라고 한다. 다른 말로 eventHandler 역할 [링크]
(여기서 Interface Builder란 스토리보드를 직접 보고 편집할 수 있도록 Xcode에서 제공하는 일종의 툴인 셈 [링크])
결국 차이점은 IB에서 보이느냐 안 보이느냐의 차이점이다.
IBAction 자체는 @Objc를 활용한다고 하니, @Objc가 더 큰 개념인셈 [링크]
생김새는 tabBar과 비슷해보이지만 명확히 말하면, 구분된(segmented) 버튼이다. TabBar은 하단에 위치해서 새로운 View로 이동이 가능한 반면, SegmentControl은 단일~멀티 선택을 표시하는 모습을 가진다.
익숙한 구조는 Keynote, Word, PowerPoint 같은 프로그램에서 Bold, Italic, Underline 등을 클릭했는지 확인할 때 보이는 구분된 버튼을 생각하면 될 것 같다. [링크]
1. scaleToFill
UIImageView에 맞춰, 이미지의 넓이와 높이를 늘린다.
따라서 ImageView 규격이 크거나 비율이 이상할 경우,
사용되는 이미지 또한 강제적으로 비율을 늘려 맞춘다.
2. aspectFit
넓이 또는 높이 중, 가장 긴 쪽을 뷰와 일치하도록 한다.
이럴 경우, 이미지의 크기는 커지면서 비율 또한 유지되는데,
한 쪽을 기준으로 맞추다보니 imageView의 빈 영역은 검은색으로 채워진다.
3. aspectFill
aspectFit과 달리, 높이와 넓이 중 짧은 쪽을 기준으로 이미지를 늘린다.
scaleToFill처럼 이미지가 늘어나지 않는다!
위 내용들로 한번 구현을 해봐야겠다.
세븐일레븐님, 저도 궁금했던 내용인데 ! 좋은글 감사합니다