iyOmSd 202

[Swift] Shadow 그림자그리기

그림자를 구현할 때 헷갈려했던 기억이있어서 더 공부해보면서 정리를 해보려고해요! 그림자를 구현할때 사용할 속성으로는 CALayer에 있는 프로퍼티 5개를 사용해서 구현하구요! shadowColor: 그림자색 지정(디폴트 검정색) shadowOpacity: 그림자 투명도 지정(0 ~ 1) shadowRadius: 그림자의 블러 정도 지정 (0일때 선같이 진한 그림자 높을 수록 퍼지는 효과) shadowOffset: 그림자의 위치(기본 0,0 -> 부모의 위치를 따라감) shadowPath: 그림자의 모양을 커스텀 가능(디폴트 nil) 이때 layer의 masksToBounds값을 True로하면 그림자가 안보이니까 주의하세요! (기본값 false) 뷰 범위밖에 보이는 것들을 보이지 않게하겠다~ 라는 뜻입니다..

iyOmSd/Title: Swift 2021.07.08

[SwiftUI] Widget 위젯만들기

한번 만들어봐야지 생각만하고 해보지못했던 위젯을 드디어 만들어 보려고합니다~~ 평소에 iOS프로젝트 생성하듯이 빈프로젝트를 만들고 Target을 선택하면 ~~Extension이 많이보여요 그중에서 이번에 할 것은 위젯이니까 찾아서 클릭! 위젯이름 넣어주고 만들면 Active하겠냐고 묻는거 확인누르고! 이제 위젯이 만들어졌어요! 빌드하면 제가 방금만든 위젯이 보일거에요 위젯에는 3가지 요소가 중요해요 WidgetConfiguration: 위젯 식별 및 위젯의 Content표시 Provider: 시간에 따른 위젯 업데이트 로직 EntryView: 위젯을 표시하는 View 처음으로 구현되어있는 코드를보면 Widget코드! @main struct NSWidget: Widget { let kind: String ..

[Swift] WWDC 21 Customize and resize sheets in UIKit

오랜만에 포스팅이네요! 일이 많아서... 한달..공백이..ㅠ 이번에 볼 게시글은 밑에서 올라와서 반만 보여지는 뷰?? 그런 걸 바텀시트라 부르는것 같아요 그러한 뷰를 힘들게 커스텀해서 띄우는 작업을 했을텐데 이제는! UISheetPresentationController를 이용해서 바텀시트를 띄울 수 있는 방법을 제시해줘요 보통 present형식을 이용해서 간단하게 구현할 수 있어요 WWDC2021에서 소개됬기때문에 iOS15+ 구요 ㅎㅎ 코드를 보면서 하나씩 살펴갈게요~~! guard let nextVC = storyboard?.instantiateViewController(withIdentifier: "ViewController") else { return } nextVC.view.backgroundC..

iyOmSd/Title: Swift 2021.06.28

[Swift] Image Resize

이미지가 커서 메모리를 많이 잡아먹다보면 메모리부족으로 앱이 죽어버리는 경우가 생기죠..! 이러한 현상을 줄이고자 이미지 사이즈를 줄여서 다시 만들어내는데 그 작업을 해볼까해요 이미지작업을 위해서 사용할 클래스부터 알아볼게요 UIGraphicsBeginImageContext 와 UIGraphicsImageRenderer 가 있는데요둘의 차이는 구식과 신식의 차이에요 UIGraphicsBeginImageContext iOS2+ SRGB 포맷 스택을 사용해서 처리하는 것 같더라구요 UIGraphicsBeginImageContext을 이용해서 context를 생성해주고 원하는 처리를 해주고 UIGraphicsGetImageFromCurrentImageContext를 이용해서 context에 적용된이용해서 이미..

iyOmSd/Title: Swift 2021.05.29

[속닥속닥] 음성 롤링페이퍼 서비스

https://apps.apple.com/app/id1557251130 ‎속닥속닥 - 롤링페이퍼 앱 ‎하이 에이치 아이~! 민지 GO야! 지금 우리가 뭐하고 있냐고? 바로 롤.링.페.이.퍼! ʕっ•ﻌ•ʔっ 말하기 어려웠던 고민부터 시시콜콜한 안부까지 하고싶었던 말을 롤링페이퍼를 통해서 남겨봐~ apps.apple.com 최근에 동아리에서 제작하게된 앱이구요! 코로나시대..라서 만나지못하니까 ㅠㅠ.. 앱으로 놀 수 있지않을까 생각에서 시작했어요 음성 롤링페이퍼지만 다양하게 놀 수 있는 방법이 있죠 팀원은 iOS3 안드3 스프링4 디자인2명으로 총 12명 이구요 개발기간은 2021.01.09 ~ 2021.04.23 약 4개월 정도 개발했네요 너무 귀엽게 잘나온 앱이에요 디자이너 분들 최고... 개발하면서도 ..

[유니뷰] 대학교 공지 알림 서비스

https://apps.apple.com/app/id1534315470 ‎유니뷰 - 대학교 공지사항 한눈에 보고, 알림까지! ‎쉽게 지나쳤던 공지사항을 이젠 유니뷰로 빠르고 편리하게 확인해보세요! 1. 공지사항 열람 우리 학교 모든 공지사항을 한 번에 볼 수 있어요! 각종 공지사항을 탭으로 넘겨 편리하게 확인할 apps.apple.com 동아리에서 좋은팀을 만나서 동거동락하며 재밌게 개발했고 동아리가 끝난 이후에 팀끼리 또 프로젝트를 하자는 제안으로 시작했구요 한 친구가 기존에 안드로이드 버전으로 만들어둔 앱이있었고 기존 기능에 새로은 기능을 더하고 UI도 확 바꿔서 안드로이드는 새단장을 하고 iOS는 없기때문에 새로 개발해서 배포를 하기로 한 토이프로젝트에요 제가 졸업을 한 후라서 아쉽지만 제가 학생이..

[Swift] UITableViewDiffableDataSource

iOS13+에서 사용할수 있는 API구요 WWDC19에서 소개됬고 TableView 및 CollectionView의 데이터의 업데이트를 쉽게 도와주는 역할이에요 보통 사용하고 있는 DataSource를 이용한 방식은 numberOfItemInSection cellForItemAt 와같은 함수를이용해서 위의 형식처럼 컨트롤러에게 섹션이몇개니? Cell이 몇개니? Cell은 어떻게 생겻니? 물어보면서 설정했었죠 설정이후 서버통신을 통해서 데이터를 불러와서 다시 업데이트를 진행하는과정에서... 아래처럼 에러가 나기도하죠 WWDC를 보면서 피식하기도하네요 🤣 이러한 문제점을 잡아서 새로 나온 것이 Diffable Data Source 입니다! 무엇이 더 좋은가~? TableView를 업데이트 하려했다면 begi..

iyOmSd/Title: Swift 2021.05.01

[Swift] UICollectionViewCompositionalLayout

WWDC19에서 소개된 내용이에요 CollectionView의 Layout을 커스텀하기 쉽게 만들어주는 역할을 해줘요 iOS13+ 에서 사용할 수 있는 API구요 들어가기앞서 이 레이아웃을 사용하기위해서 기본적으로 알아야할 개념들이있어요 NSCollectionLayoutSize NSCollectionLayoutItem NSCollectionLayoutGroup NSCollectionLayoutSection 여기에 추가적으로 NSCollectionLayoutSupplementaryItem NSCollectionLayoutBoundarySupplementaryItem 까지! (이부분은 헤더뷰 푸터뷰 필요없으면 안보셔도 OK) 왜알아야해...? UICollectionViewCompositionalLayout를..

iyOmSd/Title: Swift 2021.04.27

[Swift Algorithm] 64064 불량 사용자 (2019 카카오 인턴십)

programmers.co.kr/learn/courses/30/lessons/64064코딩테스트 연습 - 불량 사용자개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 풀이방법먼저 불량사용자에 해당하는 유저아이디를 이차원배열의 형태로 모두 저장했어요["frodo", "fradi", "crodo", "abc123", "frodoc"], ["fr*d*", "abc1**"]주어진 예시가 위의 형태라면[[frodo, fradi], [abc123]]이렇게 저장되어있겟죠여기서 저는 문자열로 저장하지않고 간단하게 비교하기위해 인덱스를 사용했어요result ..

[Swift Algorithm] 투 포인터 알고리즘

투 포인트 알고리즘은 구간의 합같이 구간을 비교할 때 효율적으로 사용할 수 있는 알고리즘이에요 보통 for문 중첩을 통해서 O(N^2)시간초과로 인해서 사용하구요 이 알고리즘의 시간복잡도는 O(N)으로 한번의 순회에 조건을 찾을 수 있어요 구간을 비교하면서 원하는 조건에 달성할때까지 먼저 end를 움직인 다음 start를 하나씩 이동하면서 구간을 좁혀가며 조건을 확인해요 조건에 해당하지않게되면 end가 배열의 끝까지 이동했는지 확인하고 끝까지 가지않았다면 end를 하나씩 이동하며 다시 start와 비교하는 과정을 거쳐요 . . . . 예를 들어서 sum이 10이상인 구간을 찾는데 그 중에서 제일 빠른 구간을 찾는다고 할게요 초기상태의 배열은 처음과끝이 같고 현재합은 1이죠 다음으로는 end를 이동시키면서..