我的DataSource方法由于某种原因从未调用过

时间:2015-12-22 17:13:40

标签: ios swift

即时通讯使用名为RSKImageCropView的小型库,它有Delegate和DataSource方法。代表称为expecterd,但DataSource不。

这是我如何配置它:

let someImage = UIImage(data: blob)

    let controller: RSKImageCropViewController = RSKImageCropViewController(image: someImage!, cropMode: RSKImageCropMode.Circle)
    controller.delegate = self
    controller.dataSource = self
    self.navigationController?.pushViewController(controller, animated: true)

这里是Delegate和DataSource方法:

    extension GameViewController:  RSKImageCropViewControllerDataSource {
    func imageCropViewControllerCustomMaskRect(controller: RSKImageCropViewController) -> CGRect {

        let rect = CGRect(x: 30, y: 30, width: 30, height: 30)
        return rect

    }

    func imageCropViewControllerCustomMovementRect(controller: RSKImageCropViewController) -> CGRect {
        return controller.maskRect
    }

    func imageCropViewControllerCustomMaskPath(controller: RSKImageCropViewController) -> UIBezierPath {
        let rect = controller.maskRect;
        let point1 = CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect));
        let point2 = CGPointMake(CGRectGetMaxX(rect), CGRectGetMaxY(rect));
        let point3 = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));

        let triangle = UIBezierPath()
        triangle.moveToPoint(point1)
        triangle.addLineToPoint(point2)
        triangle.addLineToPoint(point3)
        triangle.closePath()
        print("yay")
        return triangle
    }
}

extension GameViewController: RSKImageCropViewControllerDelegate {
    func imageCropViewControllerDidCancelCrop(controller: RSKImageCropViewController) {
        self.navigationController?.popViewControllerAnimated(true)
    }

    func imageCropViewController(controller: RSKImageCropViewController, didCropImage croppedImage: UIImage, usingCropRect cropRect: CGRect, rotationAngle: CGFloat) {
        NSNotificationCenter.defaultCenter().postNotificationName("choseImage", object: croppedImage)
        self.navigationController?.popViewControllerAnimated(true)
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您需要将控制器的cropMode设置为Custom以便调用imageCropViewControllerCustomMaskPath等方法,因此请尝试将实例化更改为:

let controller: RSKImageCropViewController = RSKImageCropViewController(image: someImage!, cropMode: RSKImageCropMode.Custom)