목록분류 전체보기 (65)
develop
스위즐링은 런타임에 해당 메서드를 내가 원하는 메서드로 바꿀 수 있다. extension UIViewController { @objc private func customViewWillAppear(_ animated: Bool) { print("customViewWillAppear 호출") } public static func swizzleMethodInitialize() { let originalSelector = #selector(viewWillAppear(_:)) let swizzledSelector = #selector(customViewWillAppear(_:)) let originalMethod = class_getInstanceMethod(UIViewController.self, origina..
1. CustomView IBDesignable 만들기 @IBDesignable class CustomView: UIView { } 2. CustomView에 IBInspectable 추가하기 @IBDesignable class CustomView: UIView { @IBInspectable var labelText: String? { set { self.label.text = newValue } get { return self.label.text } } @IBInspectable var labelTextColor: UIColor? { set { self.label.textColor = newValue } get { return self.label.textColor } } @IBInspectable va..
위와 같이 Face로 추정되는 곳에 Blur처리 또는 이미지로 합칠 수 있다. CIDetector를 사용하여 face를 찾기 private func faceDetector(_ image: UIImage?) { guard let image = image, let ciImage = CIImage(image: image), let ciDetector = CIDetector( ofType: CIDetectorTypeFace, context: nil, options: [CIDetectorAccuracy : CIDetectorAccuracyHigh] ) else { return } let features = ciDetector.features(in: ciImage) if features.isEmpty { retur..
func makeLabel() -> UILabel? { let label = UILabel() label.frame = CGRect(x: 150, y: 200, width: 200, height: 20) label.text = "Hello World!" let textSize = (label.text ?? "").size(withAttributes: [NSAttributedString.Key.font : label.font]) let tempLabel = UILabel(frame: CGRect(x: 0, y: 0, width: textSize.width, height: .greatestFiniteMagnitude)) tempLabel.numberOfLines = 0 tempLabel.text = labe..
1. Info.plist Privacy - Photo Library Usage Description을 추가한다. 2. import Photos 를 import한다. import Photos 3. PHPhotoLibraryChangeObserver PHPhotoLibraryChangeObserver 를 컨트롤러에 등록한다. PHPhotoLibraryChangeObserver 는 이미지가 추가되거나 삭제되거나 수정됬을때 호출이 된다. deinit될때 해제되어야 한다. class ViewController: UIViewController { deinit { PHPhotoLibrary.shared().unregisterChangeObserver(self) } override func viewDidLoad() {..
QLPreviewController를 사용하면 엑셀, 이미지, PDF, 집파일 등을 쉽게 보여줄 수 있다. import QuickLook class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() DispatchQueue.main.async { let previewController = QLPreviewController() previewController.dataSource = self self.present(previewController, animated: true, completion: nil) } } } extension ViewController: QLPreviewControllerDataS..
UDID(Unique Device Identifier) iOS에서 기존에 코드로 볼수 있었던 UDID가 iOS5에서부터 deprecated되었다. UDID(고유 장치 식별자)는 응용 프로그램 설치, 등록 및 MDM(모바일 단말 관리) 등록의 목적을 위해 장치를 식별하는데 사용 되는 계산 된 문자열이다. 위키의 UDID 설명 https://www.theiphonewiki.com/wiki/UDID UDID - The iPhone Wiki A UDID (Unique Device Identifier) is a calculated string that is used to identify a device for the purposes of app installation, registration, and MDM en..
숨김 파일, 폴더 보기: defaults write com.apple.Finder AppleShowAllFiles YES killall Finder 숨김 파일, 폴더 안보기: defaults write com.apple.Finder AppleShowAllFiles NO killall Finder
도형 그리기 1. 라인(Line) class LineView: UIView { override func draw(_ rect: CGRect) { let path = UIBezierPath(rect: rect) UIColor.lightGray.setFill() path.fill() path.close() let linePath = UIBezierPath() linePath.move(to: CGPoint(x: 0, y: rect.height / 2)) linePath.addLine(to: CGPoint(x: rect.width, y: rect.height / 2)) linePath.lineWidth = 6 UIColor.black.set() linePath.stroke() linePath.close() } ..