전체 글

    Image code - TIL

    class ImageViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() let img1 = UIImage(named: "instagram") let img2 = #imageLiteral(resourceName: "instagram") imageView.image = img1 // 이미지 뷰에 이미지 표시 // 이미지의 크기를 코드로 확인 if let ptSize = img1?.size { print("Image Size: \(ptSize)") } // 픽셀이 아니라 포인트 단위로 리턴합니다. //만약 픽셀 단위의 크기를 얻고싶다면..

    iOS - Image#1: Template Image

    이미지 렌더링 모드와 템플릿 이미지에 대해서 알아보도록 하겠습니다. 우선 버튼, 이미지 뷰, bar 버튼에 이미지를 넣을게요. 넣은 후 실행! 넣은 후 실행 상태입니다. 버튼과 이미지 뷰에는 원본 이미지가 등록되었지만 bar 버튼에는 템플릿 이미지로 등록되었습니다. 그 이유는 bar 버튼에서 이미지를 표시할 때는 템플릿 이미지를 표시하기 때문입니다. 그렇다면 원래 이미지는 사용하지 못하는 걸까요? 아니죠~ Render As에서 Default를 Original Image로 변경하면 사용할 수 있습니다. 이번에는 코드를 통해서 이미지들을 템플릿 이미지로 변경해보도록 하겠습니다.

    iOS - Image View

    안녕하세요:) 오늘은 이미지를 출력하고 간단한 애니메이션 효과를 구현하는 방법에 대해서 알아보도록 하겠습니다. 1. 프로젝트 생성 프로젝트를 생성 후 Image View와 Button 두 개를 추가해 주세요. 2. Image View 이미지는 종횡비가 중요한 요소기 때문에 특별한 이유가 없다면 Aspect Fit을 사용하거나 Aspect Fill을 사용합니다. Aspect Fill로 바꾸면 프레임을 벗어나는 부분이 생기는데 Clips to Bounds가 체크되어 있으면 프레임을 벗어나는 부분이 Clip 되고 체크를 해제하면 프레임을 벗어나는 부분도 다시 표시됩니다. 이미지는 텍스트와 크기를 비교해보면 상당히 큰 데이터입니다. 가능하다면 이미지 뷰의 크기와 같거나 유사한 크기를 가진 이미지를 사용하는 것이..

    Extension - 2

    1. Adding Initializer // 년,월,일을 파라미터로 받아서 날짜를 생성하는 생성자를 익스텐션으로 추가해보겠습니다. extension Date { init?(year: Int, month: Int, day: Int) { let cal = Calendar.current var comp = DateComponents() comp.year = year comp.month = month comp.day = day guard let date = cal.date(from: comp) else { return nil } self = date } } Date(year: 2020, month: 12, day: 14) // UI컬러 클래스에 새로운 생성자를 추가해보곘습니다. // extension으로 클래스..

    Extension - 1

    안녕하세요:) 이번에는 익스텐션으로 형식을 확장하는 방법에 대해서 알아보도록 하겠습니다. 1. Extension 형식을 확장하는데 사용합니다. 속성, 메소드, 생성자 같은 멤버들을 형식에 추가하는 것입니다. 익스텐션으로 확장할 수 있는 대상은 클래스, 구조체, 열거형, 프로토콜입니다. 기존 멤버를 오버라이딩 하는 것은 불가능합니다. 오버라이딩이 필요하다면 상속을 통해 서브클래싱 해야합니다. extension Type { computedProperty computedTypeProperty instanceMethod typeMethod initialzier subscript NestedType } extension Type: Protocol, ... { requirements } struct Size { v..

    Required Initializer & Failable Initializer

    꾸벅:) 모든 서브클래스에서 구현해야 하는 필수 생성자와 초기화 실패를 옵셔널로 처리하는 방법에 대해서 알아보도록 하겠습니다. 1. Required Initializer(필수 생성자) required init(param) { // 문법 } class Figure { var name: String required init(name: String) { // required를 사용하면 서브클래스에서 반드시 동일한 생성자를 직접 구현해야 합니다. self.name = name } func draw() { print("draw \(name)") } } class Rectangle: Figure { var width = 0.0 var height = 0.0 init() { width = 0.0 height = 0...