카테고리에 대한 신속한 클래스를 만드는 방법은 무엇입니까?
기존 swift 클래스의 카테고리를 만들고 싶지만 IDE에 그렇게 할 수있는 옵션이 없습니다.
카테고리가 신속한 프로젝트에 존재하는지 여부를 알 수 있습니까? 아니면 신속한 프로젝트에서 유사한 기능을 달성하는 방법은 무엇입니까?
Swift에서는 Extensions
기존 클래스, 구조체 및 열거 유형에 새 기능을 추가 하는 데 사용할 수 있습니다.
주로 다음과 같은 몇 가지면에서 Objective-C 범주와 다릅니다.
- 그들은 이름이 없습니다
- 확장을 명시 적으로 가져올 필요는 없습니다. 기존 유형에 새 기능을 추가하기 위해 확장을 정의하는 경우 확장이 정의되기 전에 생성 된 경우에도 해당 유형의 모든 기존 인스턴스에서 새 기능을 사용할 수 있습니다.
- 위에서 언급했듯이 클래스뿐만 아니라 다른 유형에서도 작동합니다.
현재 상태에서 Extensions는 다음을 수행 할 수 있습니다.
- 계산 된 속성 및 계산 된 정적 속성 추가
- 인스턴스 메서드 및 형식 메서드 정의
- 새로운 이니셜 라이저 제공
- 아래 첨자 정의
- 새 중첩 유형 정의 및 사용
- 기존 유형이 프로토콜을 준수하도록합니다.
확장을 선언하는 기본 구문은 다음과 같습니다.
extension SomeType {
// new functionality to add to SomeType goes here
}
Swift에서 확장 기능을 사용하는 방법에 대한 자세한 정보는 Apple의 문서 를 확인하십시오 .
Objective C에서는 카테고리 라고 했지만 Swift에서는 확장 이라고 합니다 . 둘 다의 목적은 하위 클래스를 만들지 않고도 기존 클래스에 추가 기능을 제공하는 것입니다.
문서에서 확장에 대해 읽었지만 이 튜토리얼 비디오 ( YouTube 버전 , github 소스 )를보기 전까지는 프로젝트에서 확장 기능을 사용하는 방법을 이해하지 못했습니다 .
다음은이를 수행하는 방법에 대한 비디오에서 가져온 요약입니다.
프로젝트에 Swift 파일 추가
프로젝트 네비게이터를 마우스 오른쪽 버튼으로 클릭하고 "새 파일 ..."을 선택합니다.
"Swift 파일"을 선택합니다.
규칙은 파일 이름을 확장하려는 클래스 이름과 함께 수행중인 작업 ( "+"기호 포함)으로 저장하는 것입니다. 예 : "UIImage + Cropping".
확장에 대한 코드 작성
방금 만든 새 Swift 파일을 엽니 다.
를 확장하는 경우 UIKit
(대신 Foundation
) 가져와야 합니다 UIView
. 그런 다음 extension
확장하려는 클래스 이름 앞에 키워드를 사용하십시오 . 그런 다음 클래스에 고유 한 새 메서드를 추가 할 수 있습니다. (확장은 기존 메서드를 재정의하는 것이 아니라 새 메서드를 추가하기위한 것이므로 이름입니다.)
비디오에서 예제는 이미지에서 원을 자르고 테두리를 제공하는 방법을 추가하는 것입니다.
import UIKit
extension UIImage {
func cropToCircleWithBorderColor(color: UIColor, lineWidth: CGFloat) -> UIImage {
// code to create the cropped circle with colored border
return newImage
}
}
프로젝트의 어느 곳에서나 확장 사용
이제 표준 클래스의 일부인 것처럼 코드의 모든 위치에서 해당 클래스에 대한 새 메서드를 사용할 수 있습니다.
다음은 비디오의 예입니다 ( github ).
import UIKit
class ViewController: UIViewController {
@IBOutlet var imageView : UIImageView = nil
override func viewDidLoad() {
super.viewDidLoad()
let img = imageView.image
imageView.image = img.cropToCircleWithBorderColor(UIColor(red:0.91, green:0.34, blue:0.16, alpha:1.00), lineWidth: 20)
}
}
이 방법 cropToCircleWithBorderColor
은의 표준 부분은 UIImage
아니지만 보시다시피 예전처럼 사용됩니다.
For further study:
In Swift it's called Extensions ! Check it out
You can use following code in your existing class
extension name{
func funcName(){
}
}
참고URL : https://stackoverflow.com/questions/24142829/how-to-create-swift-class-for-category
'IT story' 카테고리의 다른 글
'System.Net.Http.HttpContent'에 'ReadAsAsync'에 대한 정의가없고 확장 메서드가 없습니다. (0) | 2020.09.17 |
---|---|
명령 줄을 사용하여 Nupkg 파일 추출 (0) | 2020.09.17 |
인터페이스 빌더에서 생성 된 앞 / 뒤 요소에 프로그래밍 방식으로 전송 (0) | 2020.09.17 |
Android : 비디오 섬네일을 표시 할 수 있습니까? (0) | 2020.09.17 |
Python에서 확장자없이 파일 이름 가져 오기 (0) | 2020.09.17 |