티스토리 뷰

TIL

[TIL] 2022 / 07 / 05

희철 2022. 7. 5. 23:45

Cocoa Touch Framework

-> iPhone, iPad 등의 기기에서 구동되는 애플리케이션을 개발하는 환경

 

-> UIKit, Foundation 등을 전부 포함하는 최상위 레벨의 프레임워크

 

Cocoa Framework도 있는데 이는 맥OS를 위한 프레임워크

-> AppKit을 포함하고 있음.

 

이전에는 위처럼 플랫폼별로 프레임워크가 나눠져있었지만, SwiftUI를 이용한다면 모든 애플 플랫폼에서 사용이 가능함.

하지만 아직까지 완벽하게 안정적이지않아 시간이 조금 더 걸릴 것 같음. 

 

Cocoa Touch Framework에서 가장 많이 쓰는 것이 UIKit과 Foundataion

 

Foundataion Framework

-> Int, String 같은 기본적인 데이터 형식, 각종 구조체나 타이머 및 앱의 기본 객체와 기반 기술을 제공하는 역할을 함

 

-> 파일 및 데이터 관리, 네트워킹 시스템이 포함되어있음.

 

UIKit

-> 이름에서 알 수 있듯이 UI(User Interface)담당. 

     다양한 유저 인터페이스 도구들을 이용해 iOS앱을 구현할 수 있게 해줌.

 

-> UIView, UIViewController, UIFont, UIColor등 전부 UIKit에 포함됨.

 

-> 프로젝트를 생성할 때, 또는 CocoaTouch 파일을 생성할 때 기본적으로 import된 것을 볼 수 있음.

UIKit만 import되어있는 상태에서도 Foundation프레임워크 내의 것들을 사용할 수 있는 것을 알 수 있는데,

이는 command를 눌러 definition을 확인해보면 아래처럼 Foundation이 내부에 이미 import되어 있는 것을 알 수 있음.

 

UIViewController

-> 앱의 뷰 계층을 관리하는 객체

 

-> Scene의 구성 요소도 관리하면서, Scene과 데이터 사이의 상호 작용도 관리함.

 

-> 보통 하나의 화면을 하나의 뷰컨트롤러가 관리함

 

UITableViewController와 UICollectionViewController같이 이름에 ViewController가 있는 것들은 당연히 상속받는다고 생각하겠지만, UITabBarController나 UINavigationController같은 것들도 포함되는지 확인해보았음.

코코아터치로 파일을 만들고 definition을 확인해보았더니 둘 다 아래와 같이 UIViewController가 있는 것을 확인할 수 있었음.

공식문서에 나온 뷰컨트롤러의 역할

 

- 일반적으로 기본 데이터의 변경에 대한 응답으로 뷰의 컨텐츠들을 업데이트.
- 뷰를 이용해 사용자 상호 작용에 응답.

- 뷰의 크기를 조정하고, 전체 인터페이스의 레이아웃을 관리함.

- 다른 객체들과 coordinating(조정?)

 

UIView

-> 화면의 네모난 영역의 컨텐츠를 관리하는 객체 (공식문서)

 

-> 뷰는 UI의 기본 구성 요소

 

-> 뷰컨트롤러 위에 뷰 객체가 쌓이는 형태로 Scene이 구성됨.

     아웃라인뷰에서 순서를 바꾸게되면 쌓이는 순서도 바뀌어 객체가 가려지거나 나타나질 수 있음.

 

-> 목적에 따라 다양한 객체 존재 (UILabel, UITextField, UITextView, UIImageView 등)

 

-> 다양한 뷰 객체들은 모두 UIView를 상속받기 때문에 cornerRadius, borderColor같은 UIView의 속성에 접근 가능.

     예를 들어, 뷰를 동그랗게 하는 방법으로 label도 테두리를 동그랗게 만들 수 있음.

 

@IBOutlet

-> 스토리보드에 추가한 객체 속성에 접근하기 위해 사용. 변수를 지정하는 것과 비슷한 원리

 

-> 앞의 IB는 인터페이스 빌더를 나타내는 것으로, 인터페이스 빌더와 관련되어 있다는 것을 알 수 있음.

 

-> 주로 UI 제어를 하기 위해 사용 (색상, 크기 등을 조정)

 

-> weak과 strong을 선택하여 선언할 수 있는데, weak으로 선언된 변수는 다른 곳에서 참조하고 있더라고 메모리에서 제거될 수 있고 strong은 제거되지 않음.

 

@IBAction

-> 사용자의 제스쳐를 통해 발생한 이벤트로 실행될 기능을 정의할 때 사용.

     (예를 들어, 버튼을 눌렀을 때, Label의 텍스트를 바꿈)

 

______________________________________________________________________________________________________

 

앱 아이콘

appicon.co에 들어가서 1024*1024 이미지를 넣으면 앱 아이콘에 필요한 사이즈별로 이미지파일을 받을 수 있음.

하나하나 넣어도되지만 폴더 자체를 asset에 넣어도됨. 다만 이때는 AppIcon-1과 같이 이름이 다를 수도 있기에 주의해야함.

아이폰 앱을 만들더라도 아이패드에서 다운받을 수 있으므로 아이패드 전용 앱 아이콘도 반드시 필요

 

SF Symbols

-> 폰트를 조절할 때, 사이즈와 weight를 간편하게 조절할 수 있음. 이러한 San Francisco system font의 특성을 가진 이미지를

     SF Symbols.

-> 임의로 Custom한 이미지를 넣었을 경우에 SF Symbols처럼 조절이 되지 않는 이유임.

 

attribute inspector에서도 적용 안 될 수도 있음

-> UISwitch의 경우, title은 맥에서만 적용됨.

-> UISlider의 경우에서도 behavior를 바꿔도 아무 변화가 없는 것을 보니 아이폰이 아닌 다른 플랫폼에서 적용되는 것 같음.

-> 마우스를 올려놓으면 보이는 tooltip도 맥에서만 적용

 

옵션을 누른 채로 Add editor on right 버튼을 누르면 왼쪽 오른쪽이 아니라 위 아래로 나눠짐.

 

backgroundColor를 바꿔주는 경우엔 아래와 같이 작성하거나 UIColor를 생략하고 .red라고 작성해도됨

하지만 borderColor의 경우엔 UIColor를 생략해서도 안되고 마지막에 cgColor까지 붙여줘야함

-> backgroundColor는 타입이 UIColor이지만 borderColor는 CGColor이기 때문.

    즉, UIColor를 가져와서 cgColor를 통해 타입을 맞춰주는 것임.

______________________________________________________________________________________________________

 

UISlider의 value와 UIButton을 이용해 이미지뷰의 테두리 조절하기

 

borderWidth의 타입이 CGFloat이고, slider의 value는 float이므로 CGFloat()를 이용해 타입을 바꿔줌.

 

UISegmentControl

 

segmentControl을 이용해서 이미지를 변경해보았음.

selectedSegmentIndex를 통해 현재 선택된 segment에 접근할 수 있었음.

'TIL' 카테고리의 다른 글

[TIL] 2022 / 07 / 09  (0) 2022.07.09
[TIL] 2022 /07 / 08  (0) 2022.07.08
[TIL] 2022 / 07 / 07  (0) 2022.07.07
[TIL] 2022 / 07 / 06  (0) 2022.07.07
[TIL] 2022 / 07 /04  (0) 2022.07.05
댓글
최근에 올라온 글
Total
Today
Yesterday