본문 바로가기

전체 글75

[스위프트] UIKit 스크린 사이즈 가져오기(deprecated) 아래 해당 내용은 deprecated되어 더이상 사용하지 않는게 좋을듯 합니다. ----------------------------------------------------------------------------------------- UIKit에서 디바이스 사이즈를 가져와보자. // 화면 넓이 let screenWidth = UIScreen.main.bounds.size.width // 화면 높이 let screenHeight = UIScreen.main.bounds.size.height 앞에 변수명은 그냥 편하게 쓰기위해서 만든거고 실제로는 뒷부분이 각각 넓이와 높이를 의미한다. 2024. 1. 24.
[스위프트] 배경색 바꾸기 및 애니메이션 적용 앞선글에서 이어진다 2024.01.05 - [공부/스위프트] - [스위프트] 이미지 평균 색 추출 위의 예시를 통해 이미지에서 평균 색을 추출하고 이를 배경색으로 바꿔주면 매우 있어보이는 앱을 만들 수 있다. 아래는 작성 코드다. self.view.backgroundColor = self.imageViewer.image?.avgImageColor self가 필요하지 않은 부분에서는 빼고 작성해도 된다. 그리고 추가적으로 애니메이션까지 주면 부드럽게 작성된다. UIView.animate(withDuration: 0.2) { self.view.backgroundColor = self.imageViewer.image?.avgImageColor } UIView.animate(withDuration:)에 Doub.. 2024. 1. 5.
[스위프트] 이미지 평균 색 추출 스위프트에서 이미지뷰를 쓸때 이미지의 평균색을 추출하는 방법은 다음과 같다. extension UIImage{ var avgImageColor: UIColor? { guard let inputImage = CIImage(image: self) else { return nil } let extentVector = CIVector(x: inputImage.extent.origin.x, y: inputImage.extent.origin.y, z: inputImage.extent.size.width, w: inputImage.extent.size.height) guard let filter = CIFilter(name: "CIAreaAverage", parameters: [kCIInputImageKey: inp.. 2024. 1. 5.
[스위프트] UIKit에서 UISegmented Control을 써보자 UIKit에서 세그먼트라는 게 있는데 오늘은 이 친구의 사용법을 알아볼 것이다. 세그먼트 Segmented Control이라고 치면 나오는 컴포넌트로 아래와 같이 생겼다. 선택지가 몇개 없을때 누르는 항목마다 바로바로 화면의 요소가 바뀌는 장면에 사용된다. Tab Bar보다는 적지만 그래도 많은 요소들(혹은 넓은 영역)이 한번에 바껴야 된다면 좋은 선택지이다. UISegmented Control 클래스에 속해있으며 sender 파라미터로 UISegmentedControl타입을 받는다. sender를 이용해 값의 변경을 유도할 수 있다. sender.selectedSegmentIndex 이걸로 현재 선택된 세그먼트를 감지한다.(0부터 시작한다.) 당연히 눌렀을때 IBAction도 지정할 수 있다.(눌렀을때.. 2024. 1. 4.
[스위프트] final 메서드와 static 메서드 이전에 타입 메서드와 인스턴스 메서드의 비교를 해봤다. 2024.01.03 - [공부/스위프트] - [스위프트] 인스턴스 메서드와 타입 메서드 근데 타입 메서드에 대해서 생각하다 보면 이런 생각이 든다. "final class func와 static func와 똑같이 작동하지 않나?" 실제로 그렇다. 똑같이 작동한다. 적어도 내가 해봤던 테스트상으로는 그랬다. 하지만 실제로는 다른경우에 쓴다. 근데 막 찾아봐도 정확히 어떨 때 쓴다는 말이 명확한 느낌으로 없다. 내가 내린 결론은 단어에서 주는 뉘앙스 차이로 인해서 그렇다고 본다. final 먼저 final 메서드는 타입 메서드로 쓸 때 "final 메서드명" 이런식으로 쓴다. 이는 앞에서 static 타입 메서드 얘기할 때 말했듯이 오버라이딩이 안 된다.. 2024. 1. 4.
[스위프트] 인스턴스 메서드와 타입 메서드 스위프트의 메서드에는 인스턴스 메서드와 타입 메서드 두 가지 종류가 있다. 이번에는 인스턴스 메서드와 타입 메서드, 이 두가지의 차이점에 대해 알아보자. 인스턴스 메서드 인스턴스 메서드란 우리가 흔히 쓰는 메서드이다. 왜 인스턴스 메서드냐면 인스턴스화 했을때 쓸 수 있는 메서드라 인스턴스 메서드다. 타입 메서드 타입 메서드란 흔히 static을 접두어로 붙이고 선언한 메서드를 말한다. (마찬가지로 static을 붙인 프로퍼티는 타입 프로퍼티가 된다.) 이는 클래스나 구조체가 타입으로 선언되니까 호출 시에 "클래스(구조체) 명. 메서드명" 이렇게 호출할 수 있어서 타입메서드이다.(프로퍼티도 똑같다.) 하지만 중요한 건 타입메서드에는 두 가지가 있다. static 메서드 class 메서드 static 메서드.. 2024. 1. 3.
[CS] 인스턴스화란 무엇일까?(클래스, 객체, 인스턴스) 이번시간에는 "인스턴스화"에 대해서 알아보려고 한다. 아마 다들 여기저기서 수업을 듣거나 강좌를 볼때 인스턴스화한다 라는 말은 들어봤을 것이다. 근데 정확한 뜻은 모르고 그냥 느낌상 어떻다 라고만 알수있는데 이번에 확실히 알아보자. 인스턴스화란 객체지향에서 나오는 단어인데 주로 붕어빵틀과 붕어빵으로 얘기가 돌아다니는것을 확인할 수 있다. 하지만 이는 좀 부정확한 비유라는게 최근에 나오고 있다. 나도 동의한다. 그래서 나는 이왕 붕어빵틀로 얘기를 했으니까 붕어빵틀에서 크게 벗어나지 않으려 한다. 그래서 붕어빵틀의 설계도와 붕어빵틀로 얘기를 하려고 한다. 클래스(Class)와 구조체(Struct) 우리가 클래스나 구조체(스위프트에서는 주로 구조체(Struct)를 기본적인 구조와 내부 작동방식(메소드)등으로 .. 2024. 1. 2.
더 파이널스 TFLA0002 로그인 오류 해결방법 더파이널스에 TFLA0002이라는 오류코드가 뜨면서 게임을 실행할 수 없는 상황이 생기는 경우가 있는 것 같습니다. 이를 해결하는 방법은 다음과 같습니다. 스팀이랑 엠바크랑 연동을 안해서 생기는 오류라고 합니다. https://id.embark.games/id/sign-in https://id.embark.games/id/sign-in id.embark.games 여기로 들어가셔서 스팀이랑 연동을 하시면 해결됩니다. 저도 이거땜에 한 2시간 동안 헤매고 결국 어떻게 하다 보니 찾아냈군요. 2023. 12. 20.
[스위프트] 복잡한 함수의 사용 스위프트에서 함수를 선언하고 쓰는 데에 정말 복잡한 경우가 있다. 바로 함수를 일급객체로 쓰는 경우다. 함수를 일급객체로 쓰면 변수 및 상수에 저장해 쓸 수 있다. // 이 함수의 타입은 (String, String) -> String 이다 func areYouKorean(name: String, food: String) -> String { return "\(name), 당신은 \(food)를 좋아하는 한국인입니다." } // 이 함수의 타입도 (String, String) -> String 이다 func areYouAmerican(name: String, food: String) -> String { return "\(name), 당신은 \(food)를 좋아하는 미국인입니다." } 일단 name과 r.. 2023. 12. 19.
728x90