본문 바로가기

분류 전체보기242

세그웨이(코드로 Scene 전환) 스토리보드에서 뷰 컨트롤러를 2개 이상 만들고, 뷰 컨트롤러를 액션이나 아울렛 연결하듯이 다른 뷰 컨트롤러로 연결한다. 연결 방식은 Present Modally로 한다. 그러면 화살표가 연결되고 세그웨이를 호출할 준비가 된다. 코드에서 세그웨이를 컨트롤하는 메소드는 3개이다.123456 // identifier(세그웨이 아이디)에 맞는 세그웨이 실행 self.performSegueWithIdentifier(, sender: ) // 세그웨이가 실행되기 전 호출(데이터를 넘길 때 사용) self.prepareForSegue(, sender: ) // 세그웨이를 실행할지 결정 self.shouldPerformSegueWithIdentifier(, sender: ) -> Boolcs 3개의 메소드를 이용해 데.. 2015. 10. 26.
터치로 그림그리기 커스텀뷰를 활용한다. UIView를 상속한 커스텀뷰에 drawRect()를 오버라이딩 한다. 그 외에는 방법이 여러가지가 있겠지만 touchBegan(), touchMoved()를 오버라이딩해서 시작 포인트를 잡고 이동 포인트를 잡은 뒤 UIBezierPath()에 담고, drawRect()에서 그린다.코드는 아래와 같다. DrawingView.class123456789101112131415161718192021222324252627282930 class DrawingView: UIView { var path = UIBezierPath() override func drawRect(rect: CGRect) { print("drawRect") path.stroke() } override func touche.. 2015. 10. 23.
Multi touch gesture 멀티터치는 기본적으로 탭(싱글클릭을 이용한 두드리기), 끌기(pan), 밀기(swipe), 핀치(pinch), 회전(rotate), 롱 터치, 화면모서리 끌기(screen edge pan)가 제공된다. 사용방법은 멀티터치를 할 뷰에 라이브러리의 제스쳐 인식기(5가지)를 안으로 끌어다놓으면 설정된다. 가장 중요한 것은 xcode에서 기본적으로 멀티터치를 제공하지 않는다는 점이다. 인스펙터에 보면 Interaction 항목에 있는 두 가지를 모두 체크해야 활성화된다. 아래는 제스쳐 인식기를 이용한 기본적인 코드이다. 코드를 보고 활용하면 된다. 간단히 설명하자면, 제스쳐 인식기 객체를 만들고 뷰 컨트롤러를 담는다. 그리고 이미지뷰에 인식기를 등록하고 selector로 지정한 메소드에서 코드를 구현한다. 12.. 2015. 10. 23.
tableVIew의 셀의 index 값을 얻는 방법 인덱스 정보가 필요한 경우는 셀의 버튼을 클릭했을 때 클릭한 셀의 인덱스가 필요하다거나 할 때이다. 하지만 셀 정보에는 인덱스가 없다. 왜냐하면, 셀이 재사용되기 때문이다. 고전적으로 태깅을 하는 방법도 있으나 효율적이지 못하다. 그래서 인덱스를 얻기 위한 메소드를 제공하고 있다. 그래도 비효율적으로 보이지만. 먼저, 셀이 속해있는 뷰의 정보를 얻어온다. 커스텀 셀이면 몇 번 부모뷰를 콜해야 할테고, 아무튼 셀이 있는 곳까지 간 뒤, indexPathForCell(cell: UITableViewCell) -> NSIndexPath? 를 호출한다. 메소드의 리턴타입을 보면 알 수 있듯 인덱스패스가 나온다. 끗. 2015. 10. 23.
이미지 확대/축소 안드로이드는 제스쳐디텍터를 만들어서 별 짓을 다 해야 가능한 이미지 확대 축소가 매우 간단하다. 하면서 안드로이드의 부족함에 분노를 했다. 원리는 이렇다. 스크롤뷰 안에 이미지 뷰가 들어간다. 스크롤뷰에 줌을 설정하고 최소, 최대값을 설정한다. 몇가지 응용을 할 필요가 있는 부분은 나중에 추가로 작성할 예정. 코드는 아래와 같다.1234567891011121314151617181920212223242526272829303132333435363738import UIKit class ViewController: UIViewController, UIScrollViewDelegate { @IBOutlet weak var scrollView: UIScrollView! var imageVIew: UIImageVie.. 2015. 10. 22.
PickerView 피커를 사용하기 위해서는 데이터소스와 델리게이트를 설정하면 된다. 데이터소스를 통해 컴포넌트와 로우(row)의 갯수를 알아오고, 델리게이트를 통해 로우에 데이터를 뿌려준다. 1234567891011121314151617181920 class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { @IBOutlet weak var button: UIButton! @IBOutlet weak var picker: UIDatePicker! var mTime : Double = 0 func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 1 }.. 2015. 10. 21.
반복 작업을 할 때 NSTimer를 사용한다.(자바처럼 쓰레드로 반복할 수 있으나 권장하지 않는 방법이다)기본적인 반복은 아래와 같은 코드로 작성한다. 12345678@IBAction func startTimer(sender: AnyObject) { let interval : Double = 3 NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "countdown:", userInfo: nil, repeats: true) } func countdown(timer: NSTimer) { print(timer) }Colored by Color Scriptercs 다른 예제로, 1분이 지나면 얼럿뷰를 띄우는 코드를 작성해보자.12345678910111.. 2015. 10. 21.
Alert Action Sheet swift 2.0에 와서 UIActionSheet는 duplicated되었다. 기존의 Alert처럼 UIAlertController를 이용해 스타일을 적용하고, 액션을 추가한다.아래와 같은 코드를 작성하면, 12345678910let dialog = UIAlertController(title: "title", message: "message", preferredStyle: UIAlertControllerStyle.ActionSheet) let ok = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil) let cancel = UIAlertAction(title: "cancel", style: UIAlertActionSty.. 2015. 10. 21.
mysql 1067 error 정확한 원인은 알 수 없는 이 1067 에러는 어찌됐든 서버를 실행하는데 오류가 났다는 의미이다. 그 중에서도 가장 가능성 높게 일어나는 원인은 mysql의 위치를 찾지 못해서. 왜 찾지 못하냐하면, 서비스 등록할 때 설정 파일이 제대로 적용되지 않았으니까. windows, 각종 설정 폴더, C드라이브 등등... 여러 군데에 설정파일을 위치시키라는 조언이 많지만 다 안된다. 적어도 나는 안됐다. 가장 좋은 방법이자 명확한 것은 서비스 등록할 때 설정 파일을 잡아주는 거다. 명령어는 다음과 같다. 1mysqld --install mysql --defaults-file="setting_file"cs 2015. 10. 15.