SwiftUI 3

이미지/텍스트 편집기: 텍스트 속성 편집(8)

실행 결과 미리보기 구현 목표텍스트에 대하여 글자 편집, bold, italic, underline, text color 변경 속성을 구현한다.설명 및 주요 소스 코드한 개의 item만 선택 가능하게 설계했으므로, 현재 선택된 item에서 처리할 속성을, 이미지인지 텍스트인지 구분없이 하나의 enum에서 처리할 수 있다. 그래서 enum ImageTextAttr에 brightness, contrast, bold, italic를 모두 넣고 처리한다.앞에서 언급없이 사용해 온 imageInfos 배열과 textInfos 배열, 그리고 이들을 모두 관리하는 items배열 구조는 1개의 items에서 ZoomState를 protocol로 설계해서 ImageInfo, TextInfo가 채택하게 하는 형식Conte..

SwiftUI 2024.12.12

이미지/텍스트 편집기: 이미지 속성 편집(7)

실행 결과 미리보기  구현 목표이미지의  brightness, contrast 속성을 구현한다.속성값 변경은 CenterSlider를 만들어서 사용한다.설명 및 주요 소스 코드brightness 값의 범위는 -1 ~ 1이다. slider에서 값의 범위를 -100~100으로 하고 / 100하여 brightness 속성에 설정한다.contrast값의 범위는 0 ~ 2이다. slider 값의 범위를 -100~100으로 하고 /100 한 뒤, 1을 더하면 0~2 범위가 된다.CenterSlider는 중앙을 기준으로 슬라이딩하는 방식이다. 표준으로 제공되는 것은 없어서 대부분 개발자들은 인터넷을 참조해서, 하나 만들어서 사용한다. brightness, contrast 등을 동작하는게 무리가 없는 수준으로만 구현한..

SwiftUI 2024.12.12

이미지/텍스트 편집기: 화면 범위내 이미지 확대 / 축소, 이동(1)

시작에 앞서...Townket이라는 무료 광고 & 채팅 앱을 만들고 있다. 기존에는 포스트를 업로드할 때, 이미지와 몇 가지 텍스트 정보만을 업로드하는 기능으로 동작하게 했는데, 이미지와 텍스트를 추가/편집하는 기능을 넣으려고 한다.그 첫번째로 이미지 확대 / 축소, 이동부터 시작한다.구현 목표손가락 두개로 이미지 확대 / 축소드래그로 이동컨테이너 영역 수준으로 이미지 위치 제한설명 및 소스 코드SimultaneousGesture를 사용하여 DragGesture와 MagnifyGesture를 동시에 사용할 수 있도록 한다.GeometryReader로 이미지 컨테이너의 크기를 크기를 구한다.GeometryReader는 좌상단을 기준점으로 잡기 때문에, ZStack을 써서 frame(..., alignmen..

SwiftUI 2024.12.08