NSPersistentContainer를 통한 코어데이터 스택생성하기

macOS Sierra로 업데이트되면서 코어데이터에 NSPersistentContainer 클래스가 추가되었다. 이 클래스를 사용하면 코어데이터 스택을 셋업하는 여러 귀찮은 과정을 생략하고 간단하게 처리할 수 있다. 사실 코어데이터 스택을 수동으로 셋업하는 과정에서 필요한 정보는 코어데이터 모델 파일의 이름과, 저장소 파일을 생성할 위치 정도이며, 그외의 대부분의 코드는 보일러 플레이트라 할 수 있다.  저장소 파일 위치는 적당한이름(?)으로 사용자 라이브러리 내에 만들어지므로 결국

스크롤 뷰 사용하는 방법 – UIScrollView

제한된 크기의 스크린을 가지고 있는 iOS 기기에서 고해상도의 이미지를 보여줄 때는 화면에 맞게 이미지 사이즈를 축소하거나, 화면상에 이미지의 일부만을 표시하면서 스크롤을 통해서 이미지를 탐색하게 한다. 스크롤뷰는 이러한 포토뷰어 등에서 많이 사용되며, 이를 위해 코코아 터치에서는 UIScrollView를 제공한다. UIScrollView는 간단한 코드로도 기본적인 스크롤 뷰 기능을 제공하며, 손쉽게 핀치를 통한 줌인/줌아웃을 지원할 수도 있다. 이 포스트에서는 UIScrollView를

Tap and Hold 구현하기 – iOS, Swift

tap and hold 구현하기 UIButton은 기본적으로 단일 탭에 대해서 액션 메시지를 발신하게끔 디자인되어 있고, 따라서 별도의 UITapGestureRecognizer가 없어도 동작할 수 있다. 하지만 더블탭, 트리플 탭이나 길게 누르기등의 동작에 대해서는 여타 다른 UIView들과 마찬가지로 동작 인식기를 필요로한다. 

(Swift) iOS, OSX에서 이미지 저장하기

이미지를 저장하기 이미지를 JPEG, PNG 데이터로 만드는 것은 UIKit의 표준함수를 이용할 수 있다. func UIImageJPEGRepresentation(_ image: UIImage!, _ compressionQuality: CGFloat) -> NSData! func UIImagePNGRepresentation(_ image:UIImage!) -> NSData! 이를 이용해서 데이터를 저장할 수 있다. NSData로 만들어서 그냥 저장하면 되니까. func saveImage(image: UIImage, toURL url: NSURL, withFormat format:ImageSavingFormat = .PNG) { let data: NSData switch format {

tableview 셀 생성

테이블 뷰의 데이터소스 프로토콜에는 -tableView:cellForRowAtIndexPath: 라는 메소드가 있다. 이 메소드는 테이블 뷰 상의 특정 위치에 들어갈 cell 객체를 알려주는 메소드로 프로그래머가 작성해주어야 하는 부분이다. 일반적으로는 이렇게 작성했다. – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { const NSString *reuseID = @”cell”; UITableViewCell *cell = [tableView dequeReusableCellWithIdentifier:reuseID]; if (cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseID]; } …