분류 전체보기 255

iOS 스크롤샷 이미지로 저장하기

iOS14 부터 기본 브라우저인 Safari에 한해 FullPage Screenshot(ScollShot)을 지원한다. 문제는 어째서인지 이걸 JPG나 PNG가 아니라 PDF로 저장하도록 해 놨다는 점인데, Web2Pics나 PicSew같은 유료 앱들을 사용하는 방법도 있지만 조금 번거롭기도 한 게 사실이고, 이를 단축어로 조금 편하게 해결할 수도 있다. 1.0 Pdf To Image www.icloud.com 문서화 구조도 매우 단순한 단축어다. 표시한 부분을 선택해 PNG가 아닌 원하는 형식으로 저장할 수도 있다. 동작 예시 스크린샷 창에서 공유 버튼을 눌러 사용하면 된다.

08. 기본 UI 구현하기 #8

기본 UI 구현하기 #8 CustomTextField & AuthHeaderView & RegistrationView CustomTextField 더보기 Source VStack(spacing: 40) { TextField("Email", text: $email) SecureField("Password", text: $password) } .padding(.horizontal, 32) .padding(.top, 44) LoginView에서 사용했던 두 개의 TextField는 이미지와 TextField 혹은 SecureField, Divider의 조합으로 이루어져 있다. 같은 UI가 동일하게 RegistrationView에서도 사용되기 때문에 재사용을 용이하게 하기 위해 모듈화 한다. 더보기 Source..

07. 기본 UI 구성하기 #7

기본 UI 구성하기 #7 LoginView 계정 로그인에 사용할 UI를 구성한다. LoginView | Header Login 화면의 상단에 해당하는 부분이다. 푸른색의 배경과 두 줄의 TextView로 이루어져 있다. 더보기 Source VStack(alignment: .leading) { HStack { Spacer() } Group { Text("Hello.") Text("Welcom Back") } .font(.largeTitle) .fontWeight(.semibold) } .frame(height: 260) .padding(.leading) .background(Color(.systemBlue)) .foregroundColor(.white) .clipShape(RoundedShape(corne..

06. 기본 UI 구성하기 #6

기본 UI 구성하기 #6 FloatingButton & NewTweetView FloatingButton 메인 화면 어디서든 새 글을 작성할 수 있도록 FeedView 위에 표시되는 FloatingButton을 생성한다. 더보기 Source struct FeedView: View { var body: some View { ZStack(alignment: .bottomTrailing) { ScrollView { LazyVStack { ForEach(0 ... 20, id: \.self) { _ in TweetRowView() .padding() } } } Button { print("this is Floating Button Function") } label: { Image("tweet") .resizab..

05. 기본 UI 구성하기 #5

기본 UI 구성하기 #5 SideMenuView & ContentView SideMenuView | UserStatsView var userInfoDetails: some View { VStack(alignment: .leading, spacing: 4) { HStack { Text("Archimedes") .font(.title2).bold() Image(systemName: "checkmark.seal.fill") .foregroundColor(Color(.systemBlue)) } Text("@mathematician") .font(.subheadline) .foregroundColor(.gray) Text("Eureka!") .font(.subheadline) .padding(.vertical) ..

04. 기본 UI 구성하기 #4

기본 UI 구성하기 #4 ExplorerView, UserRowView 사용자 검색을 위한 화면을 구성한다. UserRowView 더보기 Source struct UserRowView: View { var body: some View { HStack(spacing: 12) { Circle() .frame(width: 45, height: 45) VStack(alignment: .leading, spacing: 4) { Text("user1") .font(.subheadline).bold() .foregroundColor(.black) Text("almost admin") .font(.subheadline) .foregroundColor(.gray) } Spacer() } .padding(.horizont..

KB스타뱅킹 6.2.6 통신사 인증 버그

서론 KB스타뱅킹 앱은 어째서인지 업데이트를 하면 높은 확률로 KB인증서 오류가 생긴다. 앱에 KB인증서가 존재하지만, 해당 인증서로 로그인은 할 수 없지만 해당 인증서를 사용하는 KB페이와 같은 계열사의 앱은 또 사용이 가능한 희한한 오류다. 이번엔 유독 짜증이 나서 컴플레인도 걸고 조금 버티다가 오늘에서야 재발급을 받기로 했다. 이번에 찾은 버그는 이 'KB인증서 발급' 과정 중 발생한 버그다. 본론 문제 발급 과정 중 개인정보를 다 입력하면 두 번째 사진과 같이 특정 번호로 문자를 하나 발송하게 된다. 문제는 그다음부터는 진행할 수가 없다. 해당 단계는 '모바일 인증서 가능 여부 확인 > 인증번호 요청'의 단계 사이에 문제가 발생한 경우로, 보낸 문자가 제대로 들어가지 않았거나 통신사 측의 전산 오..

[~2022.09.30] 일상, 예술의 전당, 캠핑, 애플스토어 잠실, (Ricoh GR 3x, iPhone 13 mini)

서론 사용한 카메라는 Ricoh GR3x와 iPhone 13 mini 아이폰으로 촬영한 사진이 월등히 적기 때문에 별도로 기재해 두겠다. 보정은 없음. 본론 9월 1일 | 부천 아버지와 리모델링했다는 도서관 구경하러 나갔다 오는 길에 찍은 하늘. 9월 2일 | 남양주 코흘리개 때 자주 데려 왔었다던 '현' 다산 생태 공원 예쁘게 꾸며 놓기는 했는데 앵글에 이래 저래 걸리는 게 많아서 아쉬웠다. 9월 3일 | 숭실대학교 갑자기 빵돌이가 되겠다며 베이킹을 배우기 시작한 Whale... 바쁜 시간을 쪼개 스터디에 나오면서도 이렇게 그날의 간식을 날랐다. 맛도 괜찮던데 진짜로. 9월 7일 | 집 늦봄에 심었던 단풍나무 씨는 어느새 아래에 수피가 생기기 시작했다. 많이도 심었는데 아무도 모를 겨울을 나는 녀석은 ..

사진 2022.11.23

03. 기본 UI 구성하기 #3

기본 UI 구성하기 #3 ProfileView ProfileView | tweetFilterBar 향후 해당 계정의 Tweet을 불러올 때 사용할 버튼을 구상한다. 세 개의 항목이 존재하고, 바로 아래에는 밑줄과 같은 인디케이터가 존재하는 것이 특징이다. 더보기 Source var tweetFilterBar: some View { HStack { ForEach(TweetFilterViewModel.allCases, id: \.rawValue) { item in VStack { Text(item.title) .font(.subheadline) .fontWeight(selectedFilter == item ? .semibold : .regular) .foregroundColor(selectedFilter =..

02. 기본 UI 구성하기 #2

기본 UI 구성하기 #2 MainTabView & ProfileView MainTabView 이전에 구현한 FeedView를 시작으로, 이후에 구현할 SearchView, NotificationView, MessageView를 포함한 TabView를 추가한다. 더보기 Source struct MainTabView: View { @State private var selectedIndex = 0 var body: some View { TabView(selection: $selectedIndex) { FeedView() .onTapGesture { self.selectedIndex = 0 } .tabItem { Image(systemName: "house") }.tag(0) ExploreView() .onTa..