簡體   English   中英

對象C到Swift自定義類的實現

[英]Object C to Swift custom class implementation

我正在使用GTImageDraw庫,該庫允許在圖像上進行繪制並將其保存。 當我要對其進行相當合理的修改時,我想將其更改為Swift,因為我對Swift語言更加熟悉。 我被困在一開始。

GTImageDraw的頭文件中,它包含

@interface UIView (Draw)
- (void)startDrawing;
-(void)stopDrawing;
-(void)resetImage;
-(void)setBrush:(CGFloat) b;
-(void) setColor:(UIColor *) color;
- (UIImage*)imageByCombiningImage:(UIImage*)firstImage withImage:(UIImage*)secondImage;
-(UIImage*) save;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)selectRubber;
@end

GTImageDraw.m文件中,它包含

@implementation UIImageView (Draw)

我試圖創建一個draw.swift文件並添加

class Draw: UIImageView {}

這顯然是不對的,因為我想我需要在類似頭文件的地方聲明UIView 也有人抱怨我沒有初始化。 但是,在.m.h文件中,任何地方都沒有init方法。

我對這一切有點陌生。 感謝您的幫助


[問題更新]如何在.m文件中初始聲明的變量

@implementation UIImageView (Draw)

UIImage *mainImg;
UIImageView *mainImageView;

BOOL _isErasing = NO;
BOOL activate = NO;
CGPoint lastPoint;
CGFloat red = 0.0/255.0;
CGFloat green = 0.0/255.0;
CGFloat blue = 0.0/255.0;
CGFloat brush = 5.0;
CGFloat opacity = 1.0;
BOOL mouseSwiped;

-(void)startDrawing{

}

我無法執行以下操作,因為擴展中不允許聲明變量

extension UIView {

    let mainImg: UIImage
    let mainImageView: UIImageView

    let _isErasing: Bool = false
    let activate: Bool = false

    let lastPoint: CGPoint
    let red: CGFloat = 0.0/255.0
    let green: CGFloat = 0.0/255.0
    let blue: CGFloat = 0.0/255.0
    let brush: CGFloat = 5.0
    let opacity: CGFloat = 1.0
    let mouseSwiped: Bool

}

再次感謝

在顯示的Objective-C代碼中,您有一個類別,而不是一個類實現。 Swift的等效項是

extension UIView {
    func startDrawing() {
        // …
    }

    func stopDrawing() {
        // …
    }

    func resetImage() {
        // …
    }

    func setBrush(b: CGFloat) {
        // …
    }

    func setColor(color: UIColor) {
        // …
    }

    func imageByCombining(firstImage: UIImage, withSecondImage: UIImage) -> UIImage {

    }

    // etc.
}

然后,您可以這樣稱呼它:

let view = UIView()

view.setColor(UIColor.orangeColor())
view.startDrawing()
view.stopDrawing()

現在,通過以下實現將代碼轉換為swift:

import Foundation
import UIKit

private var _isErasing:Bool = false
private var activate: Bool = false
private var mouseSwiped: Bool = false
private var red: CGFloat = 0.0/255.0
private var green: CGFloat = 0.0/255.0
private var blue: CGFloat = 0.0/255.0
private var brush: CGFloat = 5.0
private var opacity: CGFloat = 1.0
private var mainImg = UIImage()
private var mainImageView = UIImageView()
private var lastPoint = CGPoint()

extension UIImageView {

    public func _startDrawing() {
} 

不確定為什么接口使用UIView而不是UIImageView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM