목록분류 전체보기 (138)
REC
오늘은 스토리보드 없이 코드로만(programmatically) 스크롤뷰를 구현하는 방법에 대해 정리해 보겠다. 1. ScrollView 생성. lazy var scrollView: UIScrollView = { let scroll = UIScrollView() scroll.translatesAutoresizingMaskIntoConstraints = false return scroll }() 2. inner view 생성. -> 스크롤뷰 안에 UIView가 하나 있어야 내용이 보이고 제대로 작동한다. 필수적임. lazy var innerView: UIView = { let view = UIView() // 상황에 따라 필요한 속성 부여. view.backgroundColor = .black view.t..

iOS 개발에는 두 가지 방법이 있는데, 1. 스토리보드로 구현 2. 스토리보드 없이 코드로 구현 (programmatically) 모두 정리해 보도록 하겠다. 1. 스토리보드로 navigation bar custom 하기 자 우선 Xcode에서 새 프로젝트를 만들고 navigation bar를 만들 view controller를 선택한다. 그리고 오른쪽 아래에 보면 이렇게 네모 모양으로 화살표 아이콘이 있는데(이게 embed in임) 여기서 Navigation Controller를 눌러준다. 그럼 왼쪽에 컨트롤러가 생기는데 이건 Container View Controller라고 해서 이거 자체가 뭘 display 해주고 하는 건 아니다. 말 그대로 navigation을 도와주는 친구고 우리가 일단 얘를..
1. 커밋 이력 조회. git log --oneline 2. 돌아가고 싶은 커밋의 번호를 복사해서 아래의 명령어를 실행 -> head 위치를 변경. 해당 커밋 이후의 커밋들은 삭제됨. git reset --hard "돌아가고 싶은 커밋 번호" 3. 깃허브에 push해서 반영. git push -f origin main 이건 Xcode에서 assets 파일 이름 수정하고 나서 자주 쓰는 명령어... 처음에 initial commit한 이후로 assets의 이미지 파일 이름이 마음에 안 들어서 변경할 때가 있는데, 이게 git add . 했을 때 반영이 안 되더라구요...? (git status로 조회해봐도 해당 파일이 변경된 것으로 인식이 안 됨.) 그래서 깃허브가 이 변화를 인식하게 하려면 사실 파일명이..

스토리보드 없이 개발하면 진짜 찐 iOS 개발자가 된 것 같고 그렇더라 허허. 재밌으니까 이거 보고 다들 try 해보시길 (또 실무에서는 스토리보드 없이 한다고 하니까!) 오늘은 스토리보드 없이 버튼과 레이블을 생성하는 방법을 정리해 보겠다. 그러기 위해 해야할 것은 1. 버튼 생성 + 버튼 속성 설정 2. 레이블 생성 + 레이블 속성 설정 3. view에 버튼과 레이블을 subview로 추가 4. constraints 설정을 통한 위치 설정, 크기 설정 요 정도가 될 것 같다. 하나씩 차근차근 알아보자. 1. 버튼 생성 + 버튼 속성 설정 var mainButton: UIButton = { let button = UIButton() button.backgroundColor = .blue button.l..

iOS 공부를 하면서 느끼는 건데 코딩하다가 막혔을 때 구글링을 한글로 했을 때보다 영어로 했을 때 훨씬 더 내 상황에 적합한 자료가 나오는 것 같다. 예를 들어서 table view가 안 보이면 'Swift table view not showing' 이런 식으로 검색하면 나랑 비슷한 상황인 사람이 있더라. 영어... 영어를 잘하는 게 정말 좋은 것 같다... 자료가 다 영어다. 아무튼 Swift에서 사운드 파일을 재생하려면 어떻게 해야 할까? 위의 말을 괜히 한 게 아니다. 구글에 'Swift play sound'를 검색해 보면, https://www.hackingwithswift.com/example-code/media/how-to-play-sounds-using-avaudioplayer How to..
1. 클래스 (class) = 객체를 찍어낼 수 있는 설계도! = 붕어빵틀 - Java에서의 클래스와 동일한 구조이다. - Property : 클래스 내의 변수와 상수. - Method : 클래스 내의 함수. - 생성자 : init() // 클래스 생성. (객체의 설계도) class Circle { var radius: Double let pi = 3.1415926535 // 생성자 -> 프로퍼티를 초기화 해주는 용도. init() { radius = 10.0 } init(radius: Double) { self.radius = radius // self -> 인스턴스 자기 자신을 가리키는 것. } // 원의 넓이를 반환하는 메소드. func area() -> Double { return radius *..

- 함수의 기본 형태 func 함수이름(파라미터 이름: 파라미터 타입) -> 리턴값 타입 { 함수 내용 } → (Return Arrow) : 하이픈과 부등호를 같이 써서 return arrow라고 한다. 오른쪽에 반환되는 데이터 타입을 적어준다. func hello(name: String) -> String { return "Hello~ \(name)!" // return "Hello~ " + name + "!" } print(hello(name: "Seori")) // Hello~ Seori! Function Call : 함수이름(파라미터 이름: 입력값) print()도 Swift 내의 함수! → 문자열, 숫자, 변수 모두 파라미터로 올 수 있다. - 함수의 여러가지 형태 1. 리턴값이 없는 함수 ⇒ ..

1. 연산자 산술 연산자 비교 연산자 → 대입 연산자(=)의 우선순위가 비교 연산자의 우선순위보다 낮다. → 당연하다. 비교 연산자가 있는 식이 먼저 계산되고 그것의 결과값(= Bool)이 변수에 대입되니까. 논리 연산자 → 비교 연산자 계산 이후에 실행. 2. 조건식 if - else if - else 구문 → 꼭 { }로 묶어줘야 된다. (실행할 코드가 한 줄이어도) var dust = 155 if dust 30 && dust 50 && dust by를 음수값으로 for j in stride(from: 10, to: 1, by: -2) { print(j) } for i in 2...9 { print("\\(i)단") for j in 1...9 { // print(String(i) + " X " + S..