iOS
-
although set autolayout, UIImageView's image very hugeiOS 2020. 2. 19. 18:03
안녕하세요. 몇시간의 삽질 끝에 문제를 해결하고 돌아와 몇 자 적어보려 합니다... 😭 다시는 이런 실수를 하지 않기 위해, 혹시 같은 문제를 겪고 계신 분들께 도움이 되면 좋겠습니다 :) 문제 상황은 이러합니다. xib로 collectionView cell을 만들었고, 그 안에 UIImageView, UILabel 등을 autolayout으로 설정했습니다. 그리고 db에서 값들을 가져와 설정해주었죠. 그런데 웬걸? imageView의 image가 너무 커서 이미지 사이즈보다 조금 커지고 나머지 view들은 아예 사라져 버리는 일이 발생했습니다;; image를 넣지 않고 보면 나머지 나머지는 값도 잘 들어가있고 배치도 설정해둔대로 잘 나오는데 말이죠. 열심히 구글링 했으나... 비슷한 상황을 겪은 분은 ..
-
iOS) Storyboard 없이 개발하기2 (iOS13 개정판)iOS 2020. 2. 10. 14:52
안녕하세요! 삼쓰입니다. 예전에 storyboard 없이 개발하기 라는 포스팅을 했었는데요. iOS13이 되면서 SceneDelegate 라는 녀석이 새롭게 추가되면서 방법이 아주조금 바뀌었습니다. SceneDelegate라는 녀석이 어떤 녀석인지부터 알면 좋겠지만 다음에 포스팅해보기로 하구요! 사실 SceneDelegate를 쓰지 않는다면 뭔지 몰라도 크게 문제는 없기 때문에... 오늘은 속성으로 SceneDelegate가 추가된 상황에서 storyBoard 없이 개발하려면 어떻게 해야하는지 간단하게 알아보고자 합니다 :) 어려울거 없답니다! 차근차근 빠르게 알아보죠! 기존에 하던대로 새 프로젝트를 하나 생성해주세요! SwiftUI를 사용할게 아니니깐 StoryBoard 로 선택해서 생성합니다! 그럼 ..
-
UIBeizerPathiOS 2020. 1. 9. 01:17
iOS 개발을 하다보면 심심치않게 UIBeizerPath를 사용해야 할 상황이 생깁니다. 간단하게는 원부터 시작해서 정형적이지 않은 뷰를 그리고자 할 때는 거의 이녀석을 사용해야 합니다. 이름부터 살벌한 이녀석.. 같이 한번 정복해보도록 하겠습니다. path는 알겠는데 Beizer 우선 발음부터 쉽지 않습니다. 주로 베지에 라고 번역하시는 것 같더라구요. 베지에 곡선이라고 많이 알려져 있는데, 이 베지에 곡선을 그릴 경로를 지정해주는 역할을 UIBeizerPath가 해줍니다. 워낙 많이 사용되고 있고.. 사실 편법으로 사용법만 익혀도 간단한 건 해결할 수 있겠지만 원리를 이해하지 못하면 그 이상은 할 수 없겠죠?? 우선 베지에 곡선이 뭔지부터 확인해서 제대로 알아보자구요! Beizer Curve 베지에 ..
-
map flatMap 그리고 compactMapiOS 2019. 12. 30. 18:27
오늘은 비슷한 듯 다른 map 3총사에 대해 알아보겠습니다. Map 먼저 가장 기본이 되는 map 입니다. map의 정의는 다음과 같습니다. 배열 내부의 값을 하나씩 mapping 해 각 요소에 대한 값을 변경한 새로운 배열을 원할 때 사용합니다. 각 요소의 값을 변경한 뒤 배열로 다시 리턴해줍니다. [Int] 안의 모든 원소의 제곱한 배열을 원한다면? let a = [1, 2, 3, 4, 5] let squared = a.map { $0 * 2 } print(squared) // [2, 4, 6, 8, 10] flatMap 그리고 compactMap flatMap 도 compactMap도 둘다 맵은 맵이니 하는 일은 비슷합니다만 어떤 차이가 있을까요? 먼저 이 녀석들도 정의부터 살펴보고 가겠습니다. c..
-
Textfield touchUpInside not workingiOS 2019. 12. 27. 20:23
보통 button에 event를 붙일 때 touchUpInside 를 주로 사용합니다. 일반적으로 사용자가 클릭했다가 떼는 순간에 이벤트가 발생하는데에 익숙해져 있고 발생할 에러들을 방지할 수도 있기 때문인데요. (앱을 사용하다가 잘못 클릭했을 때 손가락을 다른 곳으로 움직여서 떼면 이벤트가 발생하지 않는 경험, 다들 해보셨죠??) TextField에도 무심코 이렇게 했다가는 평소처럼 했는데 무엇이 문제인지 한참 고민에 빠질 수 있습니다. (네 저처럼요.... :( 사실 이유는 제 개인적인 의견입니다만... TextField는 클릭하는 순간 텍스트를 입력받는 이벤트가 발생합니다. (텍스트 필드를 클릭하고 있으면 키보드가 올라오는 것을 확인할 수 있습니다.) 따라서 떼는 순간까지 기다릴 수가 없어서 tou..
-
CAGradient location 정복하기iOS 2019. 12. 17. 16:43
오늘은 그라데이션 효과를 좀 더 잘 컨트롤 해보는 시간을 갖도록 하겠습니다. Gradient 의 locations 프로퍼티를 조작하면 쉽게 할 수 있습니다. 그 전에 아직 그라데이션 자체에 익숙치 않으시다면! 다음 글을 먼저 보고 와주시면 이해가 편하실거에요! locations 먼저 애플의 정의부터 확인해볼까요? 음.. 각 gradient의 종료 지점(?)을 정의해주는 녀석이라고 하네요. 0 ~ 1사이의 값을 사용해야 하구요... 종료 지점이라.. 종료 지점이 뭘까... 네 뭐 그래요.. 이것만으로 이해가 되면 포스팅하고 있지 않겠죠!! 지금부터 같이 알아봐요 :D 다시 제 언어로 정리해보면, (0.0 ~ 1.0)까지의 값으로 그라데이션 될 색의 경계(gradient stop)를 정해줍니다. 저는 gra..
-
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은 상황에 맞..