보통 버튼 코드로 만들 때 이렇게 할텐데, 오늘 처음 안 부분!! 1. myButton.translateAutoresizingMaskIntoConstraints = false로 꼭 해줘야한다! true이면 frame 설정이 되고, false이면 오토레이아웃 설정이 된다는데 솔직히 뭔소린지는 잘 모르겠다 ㅠㅠ 2. 코드로 만들어진 객체는 기본적으로 크기, 위치, constraint값 설정 안되어있으면 보이지 않는다. 그러므로 꼭 constraint 설정을 더해줘야 한다. 3. centerYAnchor대신 safeAreaLayoutGuide를 쓰면 더 좋다>_
command + 왼쪽키, 오른쪽키 하면 좌우로 회전 가능해진다!!
UIScreen.main.bounds.width == 320
스토리보드 > lines에서 설정 가능 하다 ㅠㅠ 첨알,,
https://stackoverflow.com/questions/35764558/how-to-draw-a-1px-line-in-storyboard How to draw a 1px line in storyBoard? As we know, the table view separator is so thin and beautiful. Sometimes we have to build some separator line in storyboard or nib, the min number is 1, but actually the line appears much thicker t... stackoverflow.com ㅇㅣ렇게 똑똑한 방법이 있다니........>!
text field에 글을 쓰다 보면, 올라온 키보드때문에 화면이 가려져서 원하는 버튼을 못 누르게 될 수도 있다. 그래서, 원하는 버튼을 키보드만큼 위로 올려줘서 이 문제를 해결하려고 한다! 키보드의 높이는 UIKeyboardWillShowNotification에 subscribe해서 구할 수 있다. 그렇게 하면, keyboardWillShow 함수에서 height에 접근할 수 있게 된다. 젤 밑줄에서 keyboardHeight만큼 버튼을 위로 이동해준걸 볼 수 이따!!
https://abc1211.tistory.com/501 [ios 팁] UIImagePickerController오류- 등잔 밑을 살피자 UIImagePickerController오류- 등잔 밑을 살피자 아이폰 어플 개발을 하던 중, 늘 사용하던 UIImagePickerController에 문제가 발생했다. 사진선택 버튼을 누르면 사진 라이브러리가 뜬다. 그리고 사진을 선택하면.. abc1211.tistory.com 사진 라이브러리 만들 때 항상 읽어볼 글,
https://m.blog.naver.com/PostView.nhn?blogId=yoohee2018&logNo=221364287483&proxyReferer=https%3A%2F%2Fwww.google.com%2F 앱 등록하기 - 애플 앱스토어 Part 3 애플 앱스토어 앱 등록 단계 (기업 기준) 모든 과정을 완료하는데 약 20일 가량 소요됐다. 순수하게 대기한... blog.naver.com 처음에 이 글을 미리 봤었으면...좋았을텐데......ㅠㅠㅠ
진짜 한참 디버깅했는데, register 함수 대신 self.tableView.register(CaptionHeaderCell.self, forHeaderFooterViewReuseIdentifier: "CaptionHeaderCell") 이런식으로 쓰니까 해결됐다!! 다음에는 시간 안날리게 기억하고 있자..ㅠㅠ => 수정 꽤 시간을 날렸는데, 예시 플젝을 열어보니 .xib 파일이 실제로 필요했다 xib 파일을 넣어도 안된다면, xib도 VC처럼 코드를 상속받아야 하는데 그걸 설정 안해준게 아닌지 꼭 확인해보자!! 시간날려서 후회 막심 ㅠㅠ
2022.05.07 업데이트 https://apps.apple.com/kr/app/vimari/id1480933944 위 링크를 통해 쉽게 설치가 가능해졌습니다. safari에는 Safari 확장 프로그램에 등록된, 좋은 Vim이 없어서 직접 찾다 보니 설치가 꽤 까다로워서 글을 쓰게 되었다. 배포 버전이 있어서 설치가 쉬웠던 vimmy도 써봤는데 레이아웃이 마음에 안들고, 한국어랑 충돌하는 등 여러가지 문제가 있어서 공식 배포는 없지만 safari vim중에서 가장 유명한 vimari 가이드를 쓰려고 한다. https://github.com/guyht/vimari/blob/1bbb8dc041c53bae2ac7fa8cfbeb23d9e5b35f0f/docs/safari_12.md#installation-n..
https://stackoverflow.com/questions/39806339/uiview-iskindofclass-in-swift-3/40431014 UIView isKindOfClass in Swift 3 So I have this code: if view.isKindOfClass(classType){...} This worked fine in Swift 2, but now that I'm in Swift 3, I get this error: Value of type UIView has no member isKindOfClass How do I... stackoverflow.com
일급객체 매개변수로 쓰일 수 있다 리턴이 될 수 있다
이름 그대로, equatable은 '값이 동일한지 어떤지를 비교할 수 있는 타입'이다. Equatable 프로토콜을 준수하는 타입은 ==, !=을 통해서 동등성을 비교할 수 있다. Swift 표준 라이브러리의 대부분 기본 데이터 타입은 Equatable을 따른다. 우리가 Int값 1, 또 다른 Int값 1을 같은 값인지 ==을 통해서 확인할 수 있는 것은, 바로 Int 타입이 Equatable 프로토콜을 준수하고 있기 때문이다. 하지만 우리가 새로 만들어준 클래스, 구조체는 기본적으로는 Equatable 속성이 없다. 직접 프로토콜을 채택해줘야 한다. Equatable은 func == 을 채택해서 구현해줘야하는 프로토콜이다. public static func ==(lhs:A, rhs:A) -> Bool ..
1. 절차지향적인 코드 var sum=0 for i in 1...10{ sum += 1 } print(sum) => sum에 상태가 저장되고 있었다! 함수지향적인 코드 print((1...10).reduce(0) { $0 + $1 }) //이렇게 도는건 reduce의 특징! => 따로 상태를 저장하지 않고, reduce 안에서 결과가 합쳐진다. => 변화되는 값이 없다. Rx = Reactive Extension -> 함수형 reactive programming -> Observable 스트림을 사용하는 비동기 프로그래밍 API -> 엑셀 같은 것?! 플레이그라운드에서 RxSwift 실습하기 pod try RxSwift '비동기' Observable == Sequence ObservableType.sub..
[제너릭스 : 변수를 타입에서 자유롭게 해주는 문법] 이라고 정의되어 있다. 처음 제너릭스 (또는 T)를 소스에서 보면 매우 당황스럽고 어렵게 느껴질 수 있다. 하지만 제너릭스는 생각보다 아무것도 아니다 ㅎㅅㅎ 그냥 타입이 안정해진것 뿐!! 제너릭스를 쓰고 싶으면 평소에 타입을 쓰던 곳에, 와 T 를 써주면 된다. 애플에서 제공하는 예제이다. Int를 스왑하는건 별로 어렵지 않았다. [inout이 뭔지 모른다면?] inout을 대략적으로 설명하면, inout을 파라미터에 달아주면, 파라미터로 들어온 값을 바꿔줄 수 있게 된다. 바뀐 값은 바깥의 원래 변수에도 반영된다 !.! inout에 변수를 쓸때는 변수 이름 앞에 &를 붙여줘야 한다. 이렇게 하면 바깥에 있는 myNum도 20으로 바뀐다. 하지만 내가..
https://blog.bobthedeveloper.io/bobs-favorite-xcode-8-shortcuts-part-1-3-36381e07284d 다른 직원분과 코드 리뷰를 했는데, 나와 비교도 안되게 툴을 빠르게 사용하셔서 매우 놀랐다. 거의 마우스에도 손이 안가고, 대부분의 작업은 단축키를 이용하셨다. 나도 생산성을 높이기 위해서 미리 단축키 공부를 해보려고 한다. 개발을 하다보면 마우스나 트랙패드에 자주 손이 가기 때문에 피곤할 수 있다. 또 마우스나 트랙패트를 쓰면 코딩하는데 훨씬 오래걸린다. 따라서 실제 방향키를 사용하기보다는 게임에서 사용하는 뱡향키(WASD)를 사용하는 것이 더욱 편할 수 있다. 엔터와 딜리트, 방향키의 사용을 최소화하는 것을 추천한다. 데스크탑 화면 넘기는 단축키 :..
https://www.youtube.com/watch?v=kolg2dim3d4&t=32s 참고 자료 : [https://www.youtube.com/watch?v=kolg2dim3d4&t=32s](https://www.youtube.com/watch?v=kolg2dim3d4&t=32s) Contents * 클로저와 함수 타입 * 클로저 API 작성하기 * 클로저와 캡쳐 * escaping, autoclosure 클로저와 함수 타입 클로저 = 함수 객체 클로저의 형태 : 함수, 코드 블록 클로저가 포함된 컨텍스트까지 클로저라고 부름. > func sayHello(){ print("Hello") } > var hello = sayHello hello() 함수가 다른 변수에 대입할 수 있는 객체가 되었다! >..
올바르지 못한 코드 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { // Load resources for iOS 7 or later } else { // Load resources for iOS 6.1 or earlier } 사유 1: Version numbers aren’t always a simple floating-point number, for example “4.2.1” is a valid iOS version number. 2: You’re doing raw floating point comparison. Due to the finite precision of floating point numbers, your comp..
Functional Programming은 "자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다" . OOP나 절차지향같은 프로그래밍 방법들을 배운 것처럼, 함수형 프로그래밍도 그의 한 예제이다. Functional Programming의 가장 큰 특징 중 하나는 순수함수이다. 순수함수란, 부작용(side-effect)이 없는 함수, 즉, 함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻한다. 순수함수는 입력으로 주어진 것 외의 연산은 실행 하지 않음 순수함수는 부수효과(side effect)가 없어야 함 입력이 동일하면 출력이 동일해야함 상태의 변화가 없어야함 add(1,2) 이런 함수는 순수 함수라고 볼 수 있다. 어떤 값이나 상태를 바꾸지도 않..