[Swift][내배캠] iOS 주특기 입문 강의 (3)

팔랑이·2024년 6월 20일
0

iOS/Swift

목록 보기
34/71
post-thumbnail

1-1, 1-2를 다룬 주특기 입문 강의 (1) 게시글은 여기,
1-3을 다룬 주특기 입문 강의 (2) 게시글은 여기

새로 알게된 내용 / 정리하고 싶은 내용 위주로 작성합니다.

1-4 ~ 1-7은 이미 야매로라도 굴러봤기 때문에 따로 정리하지 않고 iOS 주특기 입문 강의 과제 게시글로 돌아올 예정입니다.


1-4. UIKit

iOS의 Cocoa?

  • Cocoa: macOS 애플리케이션 개발을 위한 프레임워크

    • 주요 구성 요소: Foundation, AppKit, Core Data
    • 예시: macOS 애플리케이션
  • Cocoa Touch: iOS, iPadOS, tvOS, watchOS 애플리케이션 개발을 위한 프레임워크

    • 주요 구성 요소: Foundation, UIKit, Core Data
    • 예시: iPhone, iPad 애플리케이션,

Foundation, UIKit 라이브러리 비교

  • Foundation: Swift File을 생성할 때 기본 적용, 기본적인 데이터 처리와 관련된 기능 제공
    - ex) 날짜와 시간 계산, 문자열 처리, 데이터 저장
  • UIKit: Cocoa Touch Class를 생성할 때 기본 적용, 주로 사용자 인터페이스 구성 관련 기능 제공
    - 화면에 뭔가를 그리거나, 버튼, 레이블, 테이블 뷰 같은 UI 요소들을 다루는 데 필요

파일에 import Foundation이 있는 경우 UI관련 코드가 아니라고 생각하면 되고, 반대로 import UIKit이 있는 경우 UI 관련 파일이라고 생각하면 됨

✨ User Defined Runtime Attributes

이거 몰라서 스토리보드로 화면 짜면서도 코드를 따로 작성했었는데...

어트리뷰트 인스펙터에서 보이지 않는 속성은
여기서 지정해줄 수가 있었다...!!!

런타임 속성 지정이기 때문에 스토리보드에선 안보이고 실행해야 보임.

앞으로 스토리보드로 짜게 되면 이걸 잘 활용해야겠군 ㅠㅠ

✨ Constraint - Priority

UIScrollView 안의 View height를 설정하는 예시이다.

Priority가 기본 1000으로 맞춰져 있는데, 이 값을 내리면 해당 제약조건의 우선순위가 낮아짐.
즉 다른 애들 제약조건이 들어왔을 때 해당 제약조건을 유동적으로 적용하게 된다.

margin, border, padding

1. Margin

: 컨텐츠를 표시하는 구분선으로, 한 요소와 다른 요소 또는 부모 요소 간의 외부 여백이다. Swift에서 직접적으로 margin 속성을 제공하지는 않지만, 오토레이아웃이나 프레임을 설정함으로써 margin을 관리할 수 있다.

  • 예제:

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(label)
    
    NSLayoutConstraint.activate([
        label.topAnchor.constraint(equalTo: view.topAnchor, constant: 20),
        label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
        label.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
    ])

2. Border

: 요소의 경계를 감싸는 선으로, UIViewlayer 속성을 사용해 border 추가 가능

  • 예제:

    let view = UIView()
    view.layer.borderWidth = 2.0
    view.layer.borderColor = UIColor.black.cgColor

3. Padding

: 요소의 내용과 그 경계 사이의 내부 여백. Swift에서는 주로 UILabel이나 UIButton 같은 요소에서 padding 개념을 직접적으로 제공하지 않지만, 커스텀 뷰를 만들거나 UIViewlayoutSubviews 메서드를 오버라이드해서 padding을 구현할 수 있다.

  • 예제:

    class PaddedLabel: UILabel {
        var padding = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
    
        override func drawText(in rect: CGRect) {
            let insetRect = rect.inset(by: padding)
            super.drawText(in: insetRect)
        }
    
        override var intrinsicContentSize: CGSize {
            let size = super.intrinsicContentSize
            return CGSize(width: size.width + padding.left + padding.right,
                          height: size.height + padding.top + padding.bottom)
        }
    }
    
    let label = PaddedLabel()
    label.text = "Hello, Padding!"

요약

  • Margin: 외부 여백, 오토레이아웃이나 프레임 설정으로 관리.
  • Border: 요소 경계를 감싸는 선, UIViewlayer 속성을 통해 설정.
  • Padding: 내부 여백, 커스텀 뷰나 layoutSubviews 메서드 오버라이드로 구현.
profile
정체되지 않는 성장

0개의 댓글