적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Swift iOS 앱 개발 173

[Swift iOS] 상단 NavigationBar 설정

large title large title scroll시 기본 title로 만드는 법 self.navigationController?.navigationBar.prefersLargeTitles = true 참고 : wonhee - large title 투명 네비게이션바 만들기 //navigationBar color 뷰 컬러와 동일하게 맞추기 self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) //navigationBar bottom bolder line 제거하기 self.navigationController?.navigationBar.shadowImage = UIImage() navigation 버튼 설..

[Swift UIKit] All about UIButton()

let button = UIButton() 으로 initialize 해주기 이렇게 선언만 해줬을 때 기본 내장 속성으로는 네모난 투명 배경에 텍스트가 기본이라고 한다. 속성을 바꿔보자면 button.backgroundColor = .black // 버튼 색 바꾸기 button.layer.cornerRadius = 16 // 버튼 원으로 바꾸기 위한 속성. 버튼 크기/2 하면 될듯 button.layer.borderWidth = 1 // 테두리 굵기 설정 button.layer.borderColor = UIColor.white.cgColor // 테두리 색 설정(cgColor) button.setTitle("버튼", for: .normal) // 버튼 텍스트 설정 button.setImage("이미지", ..

신형 맥북 M1 칩 cocoapods 설치 _compatibility with M1 chip issue (+ Homebrew)

큰맘먹고 맥북을 장만했는데, 신형 M1칩을 사용하면서 오류가 많은 것 같다. 아직 M1이랑 호환이 잘 안되나봐ㅠㅠㅠ 많은 사람들이 비슷한 문제를 겪고 있는 것을 확인. sudo gem install cocoapods 하면 설치는 되는데 pod install 하면 에러가 난다. 그 대신에 다음과 같이 ffi를 먼저 설치해주고 sudo arch -x86_64 gem install ffi arch -x86_64 pod install 이렇게 해주면 설치가 잘 된다. (x86_64 is the 64-bit version of the OS 라고 하는데 갑자기 이걸 왜 굳이 써줘야 하는지는 의문) 설치가 잘 되었다고 뜨니깐 당연히 다 끝난줄알았는데? pod install은 된거같은데 Xcode 내에서는 해당 라이브러..

[실전 Swift] AVPlayer.seek(to:time) frame move back and forth 동영상 프레임 이동

iOS Swift에서 AVPlayer를 활용한 동영상 재생 및 원하는 지점으로 이동하는 법. AVPlayer : a controller object used to manage the playback and timing of a media asset. 다양한 포맷의 동영상과 소리를 같이 재생해주는 동영상 재생 컨트롤러 Player 생성 url로 동영상을 받아올 수도 있고, 실제 파일을 지정해줄 수도 있다. 동영상 재생 컨트롤 func play() / func pause() / var rate: Float 동영상 시간 탐색 func currentTime() 은 현재 동영상 파일의 현재 재생 시간을 알려준다. (AVPlayer에 사용되는 시간들은 CMTime 형식) 원하는 지점 찾고 이동하기 Seeking T..

[Swift] higher order function?

higher order function을 통해 복잡한 코드를 간결하게 줄일 수 있다. for item in result.prefixes { self.files.append(item.name) } self.files = result.prefixes.map { item in item.name } self.files = result.prefixes.map { $0 } 위 셋은 다 동일한 기능을 수행한다. Higher order function이란? 고차함수란 전달 인자로 함수를 전달받거나, 함수 실행의 결과로 함수를 리턴하는 함수이다. 배열(Array) 타입에는 유용한 고차함수들( sorted / map / filter / reduce )이 제공된다.

[실전 Swift] Disable multiple touch on UICollectionView 다중 터치 방지

컬렉션뷰에서 셀을 터치하면 다음 화면으로 넘어가는 시스템에서, 로딩이 되는 잠깐 동안 터치를 더 했을 경우 창이 여러개가 열리는 문제가 발생했다. 이는 Boolean을 사용하여 아주 간단하게 해결할 수 있다. var cellTapped: Bool = false 선언해준 후 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { if cellTapped { return } cellTapped = true } didSelectItemAt indexPath 에서 cellTapped = true 선언해주고, 한 번 더 터치 했을 때 실행되지 않도록 return 해준다. 그리고 추후..

[실전 Swift] How to update UI?

실시간으로 변하는 현재 프레임을 받아와서 화면에 표시해주려고 했는데, init()이나 viewDidLoad()는 따로 업데이트가 되지 않으니 extension으로 만들어준 SCNSceneRendererDelegate에서 UILabel()을 업데이트 하고자 하여 텍스트를 바로 설정해주었더니, UILabel.text must be used from main thread only 라는 에러 메세지가 떴다. UI 인스턴스들을 업데이트 하고싶을 경우! DispatchQueue.main.async { 실행할 코드 } 업데이트를 실행하는 메서드 안에 DispatchQueue.main.async {} 를 넣고 그 안에 원하는 UI 업데이트 코드를 작성해주면 화면에 잘 업데이트된다! + 이거 말고도 OperationQu..

[실전] Swift Add toggle button using UIButton() 버튼 만들기

UIButton() 이용하여 토글 버튼 만들기 나는 UIButton() 속성을 가지고 있는 MaterialComponents의 MDCFloatingButton()을 이용해서 버튼을 만들어보았다. 버튼 object 생성하기 1. MaterialComponents.MaterialButtons import 해주기 (그냥 UIButton() 속성 사용 시 생략 가능) 2. MDCFloatingButton() 속성을 가진 버튼 object 만들어주기 화면에 버튼 띄우기 3. setupViews() 함수에서 a) 버튼을 subview에 넣어주고 b) .translatesAutoresizingMaskIntoConstraints = false, .sizeToFit() 을 통해 버튼의 크기 및 위치를 직접 조정할 수 있..

[Swift 실전] Adding Multiple text lines in CollectionViewCell using UIView 컬렉션 뷰 셀 안에 UIView로 속성 추가

UICollectionViewCell 속성이 내장되어있는 새로운 Swift File을 생성한다. MaterialComponents에 내장되어있는 기능들을 추가로 확장하여 사용하기 위해 MDCCardCollectionCell 속성을 이용하는 클라스를 생성한다. import Foundation import UIKit import MaterialComponents.MDCCardCollectionCell class AssetCell: MDCCardCollectionCell { // 변수들 자료형 선언 override init(frame: CGRect) { super.init(frame: frame) // 변수들의 속성 선언 setupSubViews() addConstraints() } required init?..

728x90
반응형