분류 전체보기 67

[SwiftUI] Button style

버튼에도 스타일을 적용할 수 있다. 애플에서 Button에 제공해주는 기본 스타일이다. 기본앱에서 많이 본 것 같다. BorderedProminent 스타일 코드를 적용하려면 아래와 같다. 여기서 corner radius 등 다양한 옵션도 추가할 수 있다! BorderedProminent, Bordered의 경우는 padding이 자동으로 어느정도 추가된다. import SwiftUI struct ContentView: View { var body: some View { VStack { Text("BorderedProminent") .bold() Button(action: {}, label: { Text("Button") }) .buttonStyle(.borderedProminent) } } } } 버튼..

[UX & UI] FIDO 비밀번호 없는 세상

작년 5월 애플, 구글, 마이크로소프트가 FIDO(Fast Identity Online) 비밀번호 없애기 프로젝트에 착수했다. May 5, 2022 Apple, Google, and Microsoft commit to expanded support for FIDO standard to accelerate availability of passwordless sign‑ins Apple, Google, and Microsoft commit to expanded support for FIDO standard Faster, easier, and more secure sign-ins will be available to consumers across leading devices and platforms. www.a..

[SwiftUI] GeometryReader를 사용했을 때 중앙에 배치하는 방법

문제점 발견 아래와 같이 GeometryReader를 사용하여 VStack안의 모든 내용들을 frame을 나눴을 때 좌표 (0, 0)에 위치해 버리는 문제가 발생한다. import SwiftUI struct ContentView: View { var body: some View { GeometryReader { geometry in VStack{...} } } 아래와 같이 왼쪽으로 하고 싶었던 뷰가 오른쪽처럼 왼쪽 위쪽에 붙어버린다! 왜 이럴까? 왜냐하면 iOS의 View 계층 구조에서 좌측 상단이 기준이기 때문이다. iOS에서 View의 위치는 좌측 상단에서 시작하여 오른쪽으로 갈수록 x좌표가 증가하고, 아래로 갈수록 y좌표가 증가하는 방식으로 정의된다. 흠 어쨌든, GeometryReader를 쓰면 ..

[UX & UI] 햄버거 버튼에 대해서

햄버거 버튼 애플에서는 햄버거 버튼을 되도록이면 쓰지 말라고 한다. 과연 그 이유는 무엇일까? 햄버거 버튼은 햄버거와 닮은 메뉴 버튼이다! 우연히 햄버거와 닮아서 그렇게 이름을 지었다고 한다. 보통 이 버튼은 내비게이션 바, 메뉴버튼으로 사용하곤 한다. 애플의 SF Symbol에서 햄버거 버튼을 찾아봤지만 없었다. 보통 텍스트 포맷에 비슷한 모양이 있는 것 같고 Menu를 검색해 보면 아래와 같이 나오는 것을 볼 수 있다. 햄버거 버튼에 대한 나의 생각 햄버거 버튼은 직관적이지 못하다. 분명 메뉴 버튼이라는 것을 모두가 알고 있지만, 그 메뉴 안에 무엇이 들어가 있는지 유저가 찾아내야 한다. 햄버거 버튼 안에 기능을 많이 넣어놨으니 잘 찾아서 써~라는 느낌이 든다. 물론 필요한 순간이 있다. 한 화면에 ..

[SwiftUI] TabView 연습과 오류?

이것에 대한 고민이 많았어서 이렇게 글을 남긴다. 나는 탭뷰를 연습해보고 있었다. import SwiftUI struct ContentView: View { var body: some View { VStack{ TabView{ FirstPage() Text("2") Text("3") Text("4") } .tabViewStyle(.page) .indexViewStyle(.page(backgroundDisplayMode: .always)) } } } 위와 같이 PageView같이 형성된다. 나는 여기에 앞뒤로 가는 버튼을 추가해서 좀더 직관적으로 만들고 싶었다. 그래서 추가해봤다. import SwiftUI struct ContentView: View { @State private var page = 0 ..

[Swift] 백준 5618 공약수

문제 링크 5618번: 공약수 첫째 줄에 n이 주어진다. n은 2 또는 3이다. 둘째 줄에는 공약수를 구해야 하는 자연수 n개가 주어진다. 모든 자연수는 108 이하이다. www.acmicpc.net 나의 풀이 import Foundation let n = Int(readLine()!)! let number = readLine()!.split(separator: " ").map{Int($0)!} for i in 1...number.min()! { if n == 2 { if (number[0] % i == 0) && (number[1] % i == 0) { print(i) } } else { if (number[0] % i == 0) && (number[1] % i == 0) && (number[2] % ..

[Swift] 백준 14425번 문자열 집합

문제 링크 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 풀이 import Foundation let NM = readLine()!.components(separatedBy: " ").map{Int($0)!} var set : Set = [] var n = 0 for _ in 1...NM[0] { set.insert(readLine()!) } for _ in 1...NM[1] { if set.contains(readLine()!) { n += 1 } } print(n) A..

[기초] 옵셔널 (Optionals)

값이 없는 경우에 Optionals을 사용한다. Swift의 옵셔널은 어떠한 타입에 대해서 값이 없음 (nil)을 나타낼 수 있다. 그래서 let possibleNumber = "123" let convertedNumber = Int(possibleNumber) // convertedNumber is inferred to be of type "Int?", or "optional Int" 아래 같은 경우에 Int가 아닌 Int?의 옵셔널 형태가 된다. 여기서 Int?의 의미는 Int이거나 아무런 값이 없는 것을 뜻한다. 옵셔널 변수에 nil이 있어 값이 없는 상태를 나타낼 수 있다. Swift에서의 nil은 특정 타입의 값이 없음을 나타낸다. 옵셔널에 값이 포함되어 있다고 확신하면 옵셔널 끝에 느낌표(!)..

[Swift] 백준풀이를 위한 Queue

백준을 풀고있는 어느날... 무수히 많은 시간초과를 겪은뒤 결국 Queue를 사용하기로 했다.. Queue란? Queue를 구글에 쳐보니 대기줄이라는 뜻이 있다. Stack에서는 LIFO(Last In First Out) 즉, 제일 위에서만 데이터가 들어갔다 나갔다 한다고 보면 된다. 하지만 Queue는 FIFO(First In First Out)이다. 위의 그림과 같이 먼저 들어온 것이 먼저 나간다는 뜻이다. Queue에 넣는것을 enQueue, 꺼내는 것을 deQueue라고 한다. Stack에서와 달리 Queue는 앞부분과 뒷부분의 포인터가 필요하다. Dequeue를 아래와 같이 만들어서 쓰는 이유는 Swift에서 배열을 사용할때 시간초과가 발생하기 때문... element를 모두 옮겨주는 과정이 있..