코코아 바인딩의 기초

MVC 패턴에서 프로그래머가 가장 많이 작성하는 코드는 크게 두 가지인데, 하나는 모델 데이터에서 발생한 변경을 뷰에 반영하는 것이고, 다른 하나는 뷰에서 사용자의 조작에 의해서 변경된 값을 모델 데이터에 반영하는 것이다. 사실 이것이 MVC에서 컨트롤러가 수행하는 일이다. GUI프로그램을 작성할 때 가장 많이 하게되는 이러한 작업을 조금 더 간단하게 (가급적이면 코드를 작성하지 않고) 구현하는 방법이 있으면 제법

커스텀 뷰로 만든 UI 컴포넌트의 포커스링 그리기 – Cocoa

포커스 링 코코아 UI 요소에서 현재 포커스를 받은 UI 컴포넌트는 외부에 흐릿한 푸른 색 후광이 그려지며, 현재 포커스를 받고 있는 입력 디바이스라는 점을 시각적으로 피드백한다.  시중의 코코아 관련한 대부분의 책에서는 다음과 같이 draw: 메소드 내에서 포커스링을 그리는 것으로 포커스링을 흉내낼 수 있다고 한다. 1 override func draw(_ dirtyRect: NSRect) { // 배경을 칠하고, super.draw(dirtyRect) self.bgColor.set()

(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 {

코코아 바인딩이란

코코아 바인딩 기능적인 측면에서 가장 단순하게 설명하면, 코코아 바인딩은 모델과 뷰 사이에 어떠한 글루코드 없이 값과 디스플레이되는 것을 동기화시키는 것이다. 즉 바인딩을 구성하면 값이 바뀔 대 별도의 처리 없이 자동으로 뷰가 업데이트되고, 뷰에서 변경이 일어나면 즉시 값이 변경되는 것을 코드 없이 구현한다는 것이다. 즉 작성/유지해야 하는 코드의 양을 최소화하면서 이러한 기능을 제공한다. 코코아 바인딩을 적용하기

Mac App’s Core Objects

App Life Cycle 여느 C 프로그램과 같이1 OSX앱도 main 함수로부터 시작한다. 이 함수는 단순히 NSApplicationMain() 함수를 다시 호출한다. 대략 이렇게 생겼다. #import <Cocoa/Cocoa.h> int main(int argc, const char* argv[]) { return NSApplicationMain(argc, (const char**) argv); } NSApplicationMain 함수는 앱을 초기화하고 실행할 준비를 한다. 초기화 과정의 일환으로 이 함수는 아래와 같은 작업을 한다. NSApplication 클래스 객체를