Swift
-
ios13 status bar 높이 구하기 in Swift 5iOS 2019. 12. 10. 10:15
기존에는 status bar의 높이를 UIApplication.shared.statusBarFrame.height 를 사용해 구할 수 있었지만, 이 방법은 ios13 부터는 deprecated 되어 'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead. 이라는 문구를 띄워줍니다. 이제 window scene의 statusBarManager를 사용하라는 말인데, 다음과 같이 사용할 수 있습니다. let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 Optional은 상황에 맞..
-
UIButton Tap fade event programmaticallyiOS 2019. 12. 9. 17:55
코드로 UIButton을 만들 때 클릭 이벤트 활성화하기 Storyboard가 아닌 코드로 UIButton을 생성할 경우 클릭 시 fade 이벤트가 발생하지 않습니다. showsTouchWhenHighlighted 프로퍼티를 이용해 코드 한 줄이면 해결할 수 있습니다. let customButton: UIButton = { let button = UIButton() button.showsTouchWhenHighlighted = true return button }() 감사합니다 :D
-
round only specific cornersiOS 2019. 12. 6. 10:18
특정 부분만 둥글게 만들어 주고 싶은 경우가 있습니다. 이전에는 UIBezierPath를 이용해 그리는 방법을 사용했었는데 아주 간단한 방법으로 설정해 줄 수 있는 방법을 찾아 소개해드리려 합니다. round 처리를 하는 방법은 다들 아시리라 생각합니다. let roundView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) roundView.layer.cornerRadius = 25 let roundView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) roundView.layer.cornerRadius = 25 layer의 cornerRadius 프로퍼티를 사용하면 되는데요. ..
-
iOS) View rounded + shadow 구현하기iOS 2019. 12. 5. 19:54
모서리를 둥글게 하는 corner rounded와 그림자 효과를 같이 사용해야 할 경우가 많이 있습니다. 각각은 쉽게 구현할 수 있지만 이 둘을 함께 사용하면 문제가 발생합니다. 오늘은 round 와 shadow, 각각은 어떻게 구현하는지 합치면 무슨 문제가 있는지 그래서 어떻게 하는지? 알아보도록 하겠습니다. 1. Each Implement Set corner rounded let cornerView = UIView() ... cornerView.layer.cornerRadius = 15 cornerView.layer.maskToBounds = true // or cornerView.layer.cornerRadius = 15 cornerView.clipsToBounds = true 원리는 간단합니다. ..
-
CGPoint, CGSize, CGRectiOS 2019. 11. 26. 15:32
Shortcut CGPoint: 위치를 나타냄. 2차원 좌표계의 점 (x, y) CGSize: 크기만을 나타냄. (width, height) CGRect: 크기와 위치를 나타냄 = CGPoint + CGSize (x, y, width, height) CGPoint : 2차원 좌표계의 점을 나타내는 구조체 /* Points. */ public struct CGPoint { public var x: CGFloat public var y: CGFloat public init() public init(x: CGFloat, y: CGFloat) } CGSize : width와 height의 값을 나타내는 구조체 /* Sizes. */ public struct CGSize { public var width: CGF..
-
mutatingSwift 2019. 11. 19. 10:18
구조체를 정의할 때 메서드가 구조체 내부의 데이터를 수정할 때는 mutating 키워드를 선언 해주어야 한다. mutate란 사전적으로 변화시키다, 돌연변이 의 뜻을 갖는다. 뜻을 잘 생각하면 어떻게 쓰이는지 쉽게 이해할 수 있는데, 말 그대로 원래는 되지 않는 어떤 것을 되게 만드는, 돌연변이로 만드는 것이다. Swift에서 class 는 reference type 임에 반해 struct 와 enum 은 value type 이다. value type 일 때 자신의 인스턴스 메서드 안에서는 property를 수정할 수 없다. 이때 수정이 필요하다면 mutating 키워드를 사용해야 한다. struct Point { var x = 0.0, y = 0.0 // value type인 struct에서 // 자신..
-
Linked ListComputer Science/DataStructure 2019. 11. 19. 00:27
- 선형 자료구조 - 순차적 접근방식 ( O(n) ) - 삽입, 삭제가 빠르다 ( O(1) ) - 다음 노드를 가리키는 주소를 저장할 공간 필요 Linked List는 순차적으로 모인 데이터들의 모음이다. 흔히 각각의 데이터를 Node(노드), 각 노드는 다음 차례의 노드의 reference(주소)를 갖고 있다. 대표적으로 두 가지 유형이 있는데, Singly Linked List: 내 다음 노드(next node)의 주소만을 갖고 있다. Double Linked List: 내 이전(previous)과 다음의 주소를 갖고 있다. Linked List를 사용하기 위해서는 시작과 끝의 주소를 알아야 하는데 이를 head와 tail이라 부른다. Performance Linked List의 대부분의 연산은 O(..
-
inoutSwift 2019. 10. 24. 22:07
함수로 전달된 파라미터는 함수 내부에서 상수로 취급된다. 이때 파라미터의 값을 변경해주고 싶다면, inout 을 붙여준다. 이는 함수 내부에서 값이 변경될 것이라는 신호다. 바로 변수로서 값을 변경할 수 있고 외부 변수의 값도 바뀐다. 따라서 함수의 파라미터는 당연히 값이 변경될 수 있는 var로 선언된 변수여야하며, & 를 붙여서 레퍼런스를 넘겨준다. 예를들어 다음과 같이 사용한다, func doulbeInPlace(number: inout Int) { number *= 2 } var myNum = 10 doubleInPlace(number: &myNum) print(myNum) // 20