iOS(33)
-
[CoreAnimation] Layer Masking (feat. 키 모양 만들기)
안녕하세요! 오늘은 레이어 마스킹에 대해서 알아보려 합니다. 트러블 슈팅도 조금 있습니다. 뷰의 일부를 잘라서 보여주고 싶은 애니메이션 구현 내용이 있었습니다. 보통 뷰의 모서리부분을 둥글게 자르는 프로퍼티로 layer.cornerRadius와 maskToBounds를 사용했습니다. 하지만 저희가 완전히 원하는 모양으로 잘라서 일부만 보여주고 싶은 상황이었습니다. 이 상황은 layer의 mask 프로퍼티를 이용해서 해결할 수 있었습니다. 애플에선 이렇게 설명을 합니다. An optional view whose alpha channel is used to mask a view’s content. 뷰의 콘텐츠를 마스킹하는데 알파 채널을 사용하는 선택적 뷰라고 해석할 수 있는데 뷰의 일부만을 보여주고 싶을 때..
2022.10.20 -
[CoreAnimation] CAReplicatorLayer 알아보기
CAReplicatorLayer 위치, 색깔, 시간 등의 transformation 룰을 지키면서 하나의 레이어를 복제해서 복잡한 레이아웃을 구성해주는 객체입니다. let replicatorLayer = CAReplicatorLayer() let redSquare = CALayer() redSquare.backgroundColor = NSColor.white.cgColor redSquare.frame = CGRect(x: 0, y: 0, width: 100, height: 100) let instanceCount = 5 replicatorLayer.instanceCount = instanceCount replicatorLayer.instanceTransform = CATransform3DMakeTrans..
2022.10.20 -
[Swift] 영문자로만 이루어진 String 알아내기 + String Index 쉽게 접근하기
영문자로 된 글자만 유효하고, 기타 공백, 숫자, 특수 문자가 들어있는 경우는 제외하는 경우 Swift로 코드를 어떻게 짜볼까? 두가지 방법이 있을 수 있다. 1. 기타 공백, 숫자, 특수 문자의 문자열을 정의해서 포함하는 지 여부 확인 2. 영문자인 문자열을 정의해서 포함하는 지 여부 확인 func makingArr(_ str: String) -> [String] { var result = [String]() for i in 0.. Bool { for character in str { if "~₩!@#$%^&*()_-+=}{\";:/?.>,
2022.08.16 -
[Operators] Combining
RxSwift의 Combining 연산자 정리 🚌 🚌 🚌 ~ 연산자 목차 - startWith - concat - merge - combineLatest - withLatestFrom - reduce - scan startWith Observable 맨 앞에 element를 추가해서 방출해주는 연산자입니다. let numbers = Observable.of(2,3,4) numbers.startWith(1) .subscribe(onNext: { print($0) }).disposed(by: disposeBag) 출력 // 1 // 2 // 3 // 4 concat 여러 Observable들을 순서대로 이어주는 연산자입니다. let first = Observable.of(1,2) let second = Ob..
2022.01.31 -
[Operators] Transforming
RxSwift의 Tranforming 연산자에 대한 정리 🚌 🚌 🚌 연산자 목차 - toArray - map - flatMap - flatMapLatest - buffer toArray element들을 배열로 묶어주는 연산자입니다. 1,2,3,4,5,6 -> [1,2,3,4,5,6] 으로 변형해줍니다. 여기서 toArray는 Single타입을 반환해줍니다. Single은 오직 하나의 Element만 가지는 Observable입니다. 그렇기에 Single은 success, error 두가지 event를 처리해야 합니다. 나중에 다시 다루도록 하겠습니다. Observable.of(1,2,3,4,5) .toArray() .subscribe(onSuccess: { print($0) }).disposed(by:..
2022.01.30