전체 글
-
CAGradient location 정복하기iOS 2019. 12. 17. 16:43
오늘은 그라데이션 효과를 좀 더 잘 컨트롤 해보는 시간을 갖도록 하겠습니다. Gradient 의 locations 프로퍼티를 조작하면 쉽게 할 수 있습니다. 그 전에 아직 그라데이션 자체에 익숙치 않으시다면! 다음 글을 먼저 보고 와주시면 이해가 편하실거에요! locations 먼저 애플의 정의부터 확인해볼까요? 음.. 각 gradient의 종료 지점(?)을 정의해주는 녀석이라고 하네요. 0 ~ 1사이의 값을 사용해야 하구요... 종료 지점이라.. 종료 지점이 뭘까... 네 뭐 그래요.. 이것만으로 이해가 되면 포스팅하고 있지 않겠죠!! 지금부터 같이 알아봐요 :D 다시 제 언어로 정리해보면, (0.0 ~ 1.0)까지의 값으로 그라데이션 될 색의 경계(gradient stop)를 정해줍니다. 저는 gra..
-
Array vs LinkedListComputer Science/DataStructure 2019. 12. 16. 15:53
둘다 선형 방식의 자료구조이다. 배열(Array): 인덱스를 가지고 있는 데이터의 모음. 리스트(List): 순서가 있는 데이터의 모음. 각 원소는 다음이 어떤 원소인지만 알고 있음. 배열은 인덱스를 가지고 있기 때문에 인덱스를 알고 있으면 원소에 직접 접근이 가능해 빠르게 조회할 수 있다.(O(1)) 대신 인덱스는 고정되어야 하고 만약 엘리먼트가 삭제되더라도 빈 공간으로 남겨둬야 한다. → 이는 메모리 낭비를 초래할 수 있고, 엘리먼트가 비었는지 확인하는 로직이 필요하다. 리스트는 인덱스가 없기 때문에 각각의 원소는 다음 원소만 알고 있기 때문에 순차적으로 접근해야 한다. (O(n)) 인덱스가 고정이 아니고 순서 정도의 의미만 지니기 때문에 추가, 삭제가 빠르다.(O(1)) → 하지만 추가 삭제를 위한..
-
JPG 와 PNGComputer Science 2019. 12. 16. 15:48
JPG와 PNG 방식의 차이는 한마디로 압축방식의 차이다. PNG는 비 손실 압축방식으로 몇 번을 저장하든 화질의 변화가 없지만 JPG는 손실 압축방식으로 압축할 때 마다 손실이 일어나 여러번 저장할수록 화질이 점점 떨어진다. JPEG 알고리즘은 쉽게 말해 사람의 눈에 거슬리지 않을 정도로 원본을 훼손해 압축 효과를 극대화 시키는 것이다. 좀 더 자세히 보면, DCT(discrete consine transform, 이산 코사인 변환)를 적용한 후 데이터를 줄이기 위해 Quantization(양자화)를 한다. 양자화는 자연스러운 색상을 단순화 시켜 색 수가 줄어들고 이때 데이터의 손실이 발생한다. 따라서 디지털 카메라로 찍은 사진일 경우 JPG로 압축하면 원본 이미지와 흡사한 퀄리티를 유지하면서 데이터의..
-
Floating button 만들기 in ScrollViewiOS 2019. 12. 10. 11:00
화면 Scroll에 상관없이 계속해서 떠있는, 흔히 말하는 floatring 버튼을 만드는 방법을 알아봅시다. 화면에 항상 떠있는 floating button을 만들고 싶다면, autoLayout을 잡을 때 scrollView의 frameLayoutGuide 를 이용하면 됩니다. 항상 화면에 보이는 프레임의 layout을 따르겠다는 의미입니다. 이와 반대 개념으로 스크롤이 되어야 하는 뷰는 contentLayoutGuide 를 이용합니다. 스크롤 뷰 안의 내용 content의 layout을 따르겠다는 의미입니다. 즉, 스크롤이 되어지는 부분이 되겠죠? scrollView 바로 밑에는 scrollView와 크기가 같은 contentView 가 contentLayoutGuide에 맞춰서 추가되고 그 밑에 v..
-
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 원리는 간단합니다. ..