일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- clean architecture
- Refactoring
- uitableview
- swiftUI
- SWIFT
- MVVM
- tableView
- HIG
- UITextView
- ios
- collectionview
- Human interface guide
- Xcode
- RxCocoa
- uiscrollview
- Protocol
- combine
- 리팩토링
- 리펙토링
- 클린 코드
- Clean Code
- 리펙터링
- Observable
- 스위프트
- map
- rxswift
- swift documentation
- UICollectionView
- 애니메이션
- ribs
- Today
- Total
목록UIView (7)
김종권의 iOS 앱 개발 알아가기
UIView를 비교하기 UIView의 인스턴스를 `==`로 비교가 가능 주의) UIView의 프로퍼티인 tag를 사용하는 경우도 있는데, tag를 사용하면 어떤 뷰인지 tag값을 일일이 확인해야 하므로 UIView인스턴스 그대로 비교하는 것을 지향할 것 class ViewController: UIViewController { let view1 = UIView() let view2 = UIView() let view3 = UIView() override func viewDidLoad() { super.viewDidLoad() printSomeView(view: view1) } func printSomeView(view: UIView) { if view1 == view { print("this is view..
ViewAppear 이벤트 아이디어 UIViewController는 viewWillAppear와 같은 뷰컨트롤러가 보이기 직전에 델리게이트 메소드가 있지만, UIView는 존재 x UIView에서 viewAppear와 같은 메소드가 있다면, 특정 뷰가 등장했을때 파악이 가능 등장했을때 해당 뷰의 frame값을 구하여, 이 뷰와 현재 화면의 bounds를 intersects하여 구하면 쉽게 파악이 가능 * intersects: 인자로 들어온 rect값에 호출한 instance의 bounds가 겹치는지 파악할때 사용하는 메소드 CGRect의 확장으로 정의된 함수 extension CGRect { public func intersects(_ rect2: CGRect) -> Bool } viewAppear구현 ..
View와 Layer private let someView: UIView = { let view = UIView() view.backgroundColor = .systemBlue view.layer.shadowOffset = CGSize(width: 0, height: 10) view.layer.shadowColor = UIColor.black.cgColor view.layer.shadowOpacity = 0.3 view.layer.cornerRadius = 60 view.layer.borderWidth = 3 view.layer.borderColor = UIColor.green.cgColor view.translatesAutoresizingMaskIntoConstraints = false return ..
padding 주는 방법 보통 stackView에 label을 넣을때 UIView를 넣고 그 안에 다시 Label을 넣어서 layout을 조절할 수 있지만, UILabel에 따로 padding값을 주어서 사용 가능 Padding 주는 방법 - drawText(in:)에서 padding값 설정 drawText(in:) 메소드 활용: label의 text값이 그려질때 rect에 관한 값을 수정하고 싶을때 해당 메소드를 override하여 사용 사용 방법은 super.drawText(in:)에 변경된 rect값을 인수로 주어 반영 super를 사용 class BasePaddingLabel: UILabel { private var padding = UIEdgeInsets(top: 16.0, left: 16.0,..
UIView에 extension으로 asImage()추가 UIGraphicsImageRenderer(bounds:)의미: Core Graphics 지원 이미지를 만들기 위한 그래픽 렌더러 UIView의 layer.render(in:)에서 렌더러 context를 넣으면 기존 UIView가 UIImage로 변환 extension UIView { func asImage() -> UIImage { let renderer = UIGraphicsImageRenderer(bounds: bounds) return renderer.image { rendererContext in layer.render(in: rendererContext.cgContext) } } } image처럼 사용 class ViewControlle..
아이디어 stackView가 있고, stackView 안에 Button들이 존재 해당 Button들은 for문으로 정해준 개수만큼 생성되며, 배열로 참조되고 있는 형태 버튼들의 tag를 설정하여, 어떤 버튼이 눌렀는지 tag로 체크 후 tag이하를 갖는 인덱스들을 선택된 처리 BaseView 정의 class BaseView: UIView { override init(frame: CGRect) { super.init(frame: frame) configure() } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func configure() {} fu..
.xib파일과 .swift파일 생성 // // MyView.swift // TestSwfit // // Created by 김종권 on 2020/11/01. // Copyright © 2020 jongkwon kim. All rights reserved. // import Foundation import UIKit @IBDesignable class MyView: UIView { } .xib파일에서 UI기본 설정 (초기화면) FIle's Owner에 클래스 정의 Safe Area 체크 해제 Size를 Freeform으로 설정 드래그하여 크기 조절 후 디자인 커스텀 (하단의 검은색 bar는 다른 파일 클릭한 다음 다시 이 파일 클릭하면 사라짐) MyView.swift 코드 작성 xib, nib 파일 개념 ..