처음부터 차근차근

Swift 정리 본문

프로그래밍/Swift

Swift 정리

_soyoung 2021. 11. 14. 01:16
반응형

Attribute

attribute란, 선언(declaration)과 타입에 부가적인 정보를 제공하는 것이다.

 

attribute의 종류는 2가지가 있다.

 

  • 선언에 적용되는 것 ex) @discardableResult, @available(iOS 10.0, macOS 10.12, *)
  • type에 적용되는 것

 

형태

@attribute명(매개변수)

 

예시

@discardableResult
func test() {
    return "apple"
}
test()

@discardableResult :

함수를 정의하고 리턴값을 사용하지 않으면 컴파일러가 에러를 보이는데, 이 에러를 띄우지 않도록하는 attribute.

함수 리턴값 꼭 사용안해도 되게 만든다. 

 

인터페이스 빌더(Interface Builder)에서 사용하는 attribute

@IBAction(메서드 선언), @IBSegueAction, @IBOutlet(프로퍼티 선언), @IBDesignable, @IBInspectable

 

 

 

 

break point

break point를 사용하면 디버깅을 할 수 있다.

행 번호의 왼쪽을 클릭하면 파란색 책갈피 모양의 break point가 만들어진다.

그리고 실행버튼을 누르면 실행이 쭉 되다가 break point에서 실행이 멈춘다.

break point를 없애는 방법은 오른쪽 코드 작성 부분으로 드래그를 하면 break point가 사라진다.

 

 

 

 

초보자에게 자주 생기는 에러

1. 실행 버튼을 눌렀을 때 error

2021.11.17 - [Error&Warning] - Xcode 실행 버튼 눌렀을 때 error

 

Xcode 실행 버튼 눌렀을 때 error

Xcode에서 앱 실행 버튼을 눌렀는데 simulator가 나오다 말고 저런 에러가 생겼다. 이 error의 이유는 Outlet 프로퍼티나 Action메서드가 label이나 button에 두 번 이상 연결되었기 때문이다. 해결 방법  Outl

ksyy.tistory.com

 

 

2. simulator검은 화면만 계속 뜨는 error

2021.11.17 - [Error&Warning] - Xcode 실행 중 Simulator 계속 검은 화면만 뜨는 error

 

Xcode 실행 중 Simulator 계속 검은 화면만 뜨는 error

Xcode에서 실행 버튼을 눌렀는데 갑자기 Simulator화면이 까맣게만 보였다. 이 error가 생기는 이유는 story board entry point 삭제되었기 때문이다. Xcode에서 story board의 entry point가 삭제됬을 때 계속..

ksyy.tistory.com

 

 

 

 

 

앱 아이콘 만드는 방법

1. 먼저 아이콘으로 쓸 이미지를 다운 받는다.

이때 흑백 아이콘이 아닌 이미지를 다운받아야한다.

왜냐하면 앱 아이콘의 비어있는 부분은 검정색으로 채워져 나오기 때문에 흑백 아이콘을 사용하면 전체가 까맣게 나온다.

 

 

2. 앱 아이콘을 크기별로 만들어야하므로 아래의 사이트에 들어가서 크기별 아이콘을 만든다.

https://appiconmaker.co/

 

App Icon Maker - Resize App Icon to all sizes for iOS/Android projects.

App Icon Maker / App Icon Resizer AppIconMaker.co is a cloud service free icon maker which optimizes your app icon with proficient speed and generates icons of all sizes to be used on apps for different app stores. It’s versatility in compatibility serve

appiconmaker.co

choose file 부분에다가 이미지 파일을 드래그 한후 generate를 누르고, 조금 기다렸다 download iOS icons zip file 앵커를 누른다.

 

 

3. Xcode로 들어가서 크기에 Assets.xcassets -> Appicon 을 클릭한 후 사각형에다 이미지를 드래그한다.

이때, 이미지를 크기에 맞는 부분에다 드래그 해야한다.

예를 들어 120x120크기 이미지는 120x120 부분에다 넣는다.

결과

 

 

 

 

imageView만드는 방법

일단 이미지를 Asset.xcassets에다 드래그해서 집어넣는다.

 

그 다음 imageView를 story board에다 집어넣고,

 

imageView 탭의 image를 클릭해서 아까 asset에 넣어둔 이미지를 찾아 클릭한다.

 

+ 이미지 fit

image View 탭에는 content Mode가 있고, 이 안의 설정 값을 바꿔 이미지를 어떤 방식으로 칸에 채워넣을 건지를 선택할 수 있다.

 

가장 많이 쓰는 설정 정리

  • Aspect Fit : 가로 세로 비율 유지하면서 Image View크기에 맞게 설정한다. 이미지 비율이 imageView와 맞지 않을 시 imageView에 공백이 생긴다.
  • Scale To Fill : Image View의 가로폭 세로폭에 맞춰 가로 세로 비율 변경한다.(그림이 늘어나거나 줄어들음)
  • Aspect Fill : 가로 세로 비율 유지하면서 Image View에 맞춰 설정한다. 이미지 이미지 비율이 imageView와 맞지 않으면 그림이 짤린다. (즉, imageView에 공백이 안생김)

 

 

 

 

레이아웃 변경하기

story board에서 디자인할 때 UI가 UI에 겹쳐서 안보일 때가 있다. 

이 때 한 UI를 타 UI보다 앞으로 오게 만들고 싶을 수 있는데 이럴 때는 view 안의 오브젝트를 드래그해서 위치를 바꿔주면 된다.

예시

 

 

 

 

sender

@IBAction 메서드는 매개변수로 sender을 가지고 있다.

@IBAction func btnRose(_ sender: UIButton) {
    print(sender)
}

위와 같이 sender을 출력하면 아래의 결과가 나온다.

결과

즉, sender는 UIButton의 정보를 가지고 있다.

 

 

 

 

UIButton에 tag 사용하기

UIButton inspector

UIButton에 tag를 사용하면 하나의 @IBAction 메서드로 기능을 부여할 수 있다.

즉, @IBAction 메서드를 button 개수만큼 만들지 않아도 된다는 뜻이다. 

 

<tag 사용하는 방법>

@IBAction 메서드 한 개를 만들고 나머지는 행번호 원을 button으로 드래그하면 하나의 @IBAction 메서드 여러 개의 버튼을 연결할 수 있다.

@IBAction 메서드 button에 연결

그리고 각 button의 tag를 달리한다.

@IBAction func btnRose(_ sender: UIButton) {
    if (sender.tag == 1) {
    }
    else if (sender.tag == 2){
    }
    .
    .
    .
    .
    else {
    }
}

그 다음 이런 식으로 코드를 만들어서 tag가 1번인 button이 눌렸을 땐 if (sender.tag == 1) 구문이 실행고, tag가 2이면 그 아래 구문이 실행되게 만들면 된다.

 

 

 

 

동작(이벤트)을 가질 수 있는 클래스와 없는 클래스의 차이

UIButton은 @IBAction 메서드를 만들어서 button 클릭 시 동작을 구현 할 수 있다.

하지만 UIRabel은 UIButton처럼 클릭 시 동작을 구현 할 수 없다.

그 이유는 UIRabel은 UIControl class를 상속받지 않았기 때문이다.

 

UIView - UIRabel

          - UIControl - UIButton

 

동작을 가질 수 있는 클래스와 그럴 수 없는 클래스의 차이점는 UIControl class 상속 여부이다.

 

 

 

 

 

 

 

 

출처 : iOS프로그래밍기초(21-2학기)한성현교수 강의 내용 변형 및 요약

반응형
Comments