목록전체 글 (321)
꾸준히 안타치기
import UIKit @IBDesignable // 스토리보드미리보기처리 // 액션이벤트를 처리하려면,UIControl를 서브클래싱해야한다. public class CSStepper: UIControl { // 접근제한 범위 설정 public var leftBtn = UIButton(type: .system) // 좌측 버튼 public var rightBtn = UIButton(type: .system) // 우측 버튼 public var centerLabel = UILabel() // 중앙 레이블 //스테퍼의 현재값을 저장할 변수 @IBInspectable // 인터페이스빌더에서도 사용할수있도록함 public var value: Int = 0 { didSet { //프로퍼티의 값이 바뀌면 자동으로 ..
1. code로 구현하기 CSStepper.swift 생성 스테퍼의 현재 값을 저장할 프로퍼티 value를 정의한다. 초기값은 0 기본속성을 설정할 setup메소드 정의, 각 초기화 메소드에 호출하는 구분 추가 뷰의 크기에 따라 내부 객체의 크기를 조절하는 방법에는 두가지가 있는데, 하나는 제약조건을 걸어 자동레이아웃을 설정하는 방법이고, 두번째는 layoutSubview메소드를 사용하는 방법이다. layoutSubview메소드를 추가한다. 외부에서 호출할수 있도록 public으로 호출한다. 버튼과 레이블의 사이즈를 계산식으로 구현해 상수에 대입한다. import UIKit @IBDesignable // 스토리보드미리보기처리 public class CSStepper: UIView { // 접근제한 범위 ..
커스텀 탭바 컨트롤러 만들기 메인스토리 보드에서 탭바 컨트롤러를 추가한다. 연결된 뷰컨트롤러를 삭제하고(있는거 사용하면 버그있다함), 뷰컨트롤러 3개를 각자 연결을 다시해준다. 탭바에 연결한 뷰컨트롤러의 StoryboardID를 작성한다. VIEW01, VIEW02,VIEW03 CSTabBarController.swift파일을 생성한다. import UIKit // 탭바컨트롤러클래스를 상속받아야한다. class CSTabBarController :UITabBarController{ //뷰하나(탭바역할)와 버튼3개(탭바이이템) 생성 let csView = UIView() let tabItem01 = UIButton(type: .system) let tabItem02 = UIButton(type: .syst..
1) CSButton2.swift / 커스텀클래스 작성후, 스토리보드에서 연결해서 버튼 만들기 1.버튼 클래스를 만들고, 스토리보드에서 사용하는 초기화 메소드 init을 한다. import UIKit class CSButton2 :UIButton { // 스토리보드에서 사용하는 초기화 메소드는 init(coder:)로 정해져 있다. required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! // 스토리보드 방식으로 버튼을 정의했을때 적용됨 self.backgroundColor = .green self.layer.borderWidth = 2 self.layer.borderColor = UIColor.black.cgColor self.set..
MapAlertViewController import UIKit import MapKit class MapAlertViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 슬라이더 알림창 버튼 생성 let sliderBtn = UIButton(type: .system) sliderBtn.frame = CGRect(x: 0, y: 250, width: 100, height: 30) sliderBtn.center.x = self.view.frame.width / 2 sliderBtn.setTitle("Slider Alert", for: .normal) sliderBtn.addTarget(self, action..
버튼과 알림창 내용사이의 공간에 뷰컨트롤러를 넣어서 커스텀 할 수 있다. import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 기본 알림창 버튼 생성 let defaultAlertBtn = UIButton(type: .system) defaultAlertBtn.frame = CGRect(x: 0, y: 100, width: 100, height: 30) defaultAlertBtn.center.x = self.view.frame.width / 2 defaultAlertBtn.setTitle("기본 알림창", for: .normal) defaultAlertBtn.addT..
1. 메인스토리보드에서 네비게이션 컨트롤러 연결한다. 네비게이션 아이템은 네비게이션바의 콘텐츠를 표현하는 객체 네비게이션바는 네비게이션컨트롤러의 제어하에 있는 공통객체 네비아이템은 개별적인 뷰컨트롤러에 통제를 받는 개별적 객체 이므로 네비게이션 아이템을 화면에 추가할때는 네비게이션컨트롤러가 아닌 뷰컨트롤러에 추가해야한다. 참조시에도 뷰컨트롤러를 거쳐야한다. 2. 타이틀 두줄로 표현하는 방법 1 ( 레이블 객체하나로 두 줄표현하기 ) 작성 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 네비게이션 타이틀 초기화 self.initTitle() } func initTi..
?? 사용하면서 발생한문제... 맨첫화면이 아닌 눌러서 탭들이 있는화면으로 이동하는 법을 모르겠음..첫화면이 무조건 탭화면으로 나옴 달력, 파일, 사진의 각각의 뷰컨트롤러 클래스를 생성한다. 뷰컨1 , 뷰컨2 ,뷰컨3 import UIKit class ViewController: UIViewController { override func viewDidLoad() { //1.타이틀레이블 생성 let title = UILabel(frame: CGRect(x: 0, y: 100, width: 100, height: 30)) //2.타이틀 레이블속성설정 title.text = "첫번째탭" title.textColor = .red title.textAlignment = .center title.font = UIF..
프로젝트를 생성하고, 뷰컨트롤러가 있는 상태에서 임베디드해 TabbarController를 생성한다. 뷰컨트롤러를 2개더 추가하고, 탭바컨트롤러에서 Ctrl클릭후 뷰컨트롤러로 연결한다. Relationship Segue ->view controllers 각각의 뷰컨트롤러에 클래스를 생성해 연결한다. 뷰컨1, 뷰컨2, 뷰컨3... 탭전환시 화면을 식별할수 있도록 뷰 컨트롤러에 레이블을 추가한다. sizeToFit메소드와 center속성 설정 구문을 함께 사용할 경우, 객체의 center속성 설정은 항상 sizeToFit메소드 호출후에 처리하는것이 좋다. 이유는 객체의 크기가 정해진 다음에 center값을 정하는것이 안전하기 때문 import UIKit class ViewController: UIViewCo..
https://i-colours-u.tistory.com/13 [Xcode] 엑스코드에서 자주 사용하는 단축어 모음 안녕하세요! 오늘은 iOS 개발을 하게 된다면 필수적으로 사용하게 되는 Xcode에서 쓰는 단축어를 알아보려고 합니다! 다른 IDE에 비해 탈도 많고, 겁나 무겁지만... 뭐 어쩌겠어요 선택지가 이것밖 i-colours-u.tistory.com comm + R / 빌드하기 comm+ shift + 0 파일 열기 comm+ shift + L / 라이브러리 control + i / 자동정렬 cmd + 백스페이스(⌫) / 한줄한번에 지우기 cmd + 왼쪽/오른쪽 / 줄 왼오로이동 option + 왼쪽/오른쪽 / 단어간격으로 커서이동 option + 드래그 / 여려줄부분긁기 comm + 0 네비창..
ViewController에 스토리보드 연결없이 코드로만 작성 import UIKit class ViewController: UIViewController { var paramEmail: UITextField! // 이메일 입력필드 var paramUpdate: UISwitch! // 스위치객체 var paramInterval: UIStepper! //스테퍼 // 출력용 레이블 var txtUpdate: UILabel! // 스위치 컨트롤값 표현레이블 var txtInterval : UILabel! // 스테퍼 컨트롤값 표현레이블 override func viewDidLoad() { //1.네비게이션 바 타이틀을 입력한다. self.navigationItem.title = "설정" //2.이메일 레이블을..
Xcode에서 Account에 + 버튼을 눌러 깃허브아이디를 추가하고 토큰인증해 로그인한다. 처음에 commit하면 깃허브에 연동도 안되고 아직 Git에는 Repository가 생성도 안됐고, push도 못하는 상황이다. https://yoonandro.tistory.com/95 참고 왼쪽 마우스 누르고 파란색부분 선택하면, 하단창 뜨고, 깃허브에 새로운 프로젝트를 만들수 있다. 만들면 이전에 커밋했던것들이 싹다 업로드 된것을 깃허브에서 확인할수 있다. orgin은 Xcode의 소스컨트롤 네비케이터에서 해당 저장소와의 연결을 표시하는 항목으로 사용됨
튜플이란? 쉼표로 구분된 객체의 모음 / 배열과 비슷하지만 다르다. 데이터를 간편하게 묶을 수 있는 효율적인 자료구조 var topTitle = ("메인화면 ","mainIcon.png") 쌍으로 이루어져서 사용할수 있는 형태 , 튜플로서 값이 두개 들어있다. 인덱스가 자동으로 잡혀있다. topTitle.0 으로 호출하면 메인화면이 호출됨 리스트는 요소의 값이나 크기를 변경할 수 있으나, 반면에 튜플은 요소들의 개수와 내용을 변경할수 없다. 요소 각각의 인덱스는 중요한 의미를 가진다. 튜플의 특성 1. 다양한 타입을 저장할 수 있다. 2. 첨자 타입의 속성이 제공되지만, 메소드나 속성, 서브스크립트는 제공되지 않는다. 3. 한번 입력된 튜플값의 변경을 불가능하다. 4. 기능을 정의하는 클래스나 구조체가 ..
https://developer.apple.com/forums/thread/697559 Executable Not Found ,Xcode | Apple Developer Forums I may have find a workaround to this issue... not a solution but a workaround. I have to work on a not really recent project that was built using the Legacy System that, as you may know, is deprecated now. While I was using Xcode 12 everything was fine. developer.apple.com https://jusung.github...