Swift - 如何优化图像的裁剪

时间:2014-12-16 20:53:09

标签: ios image optimization swift uiscrollview

我有一个以编程方式生成的图像,它比iPhone的屏幕宽一点。 此外,我有一个ScrollView,我想在滚动时创建类似视差的东西。 但我在iPhone 4S上面临优化问题,我不知道我做错了什么。 我的意思是,如果我可以缩放图库中的任何照片并顺利滚动它,为什么我不能在我的程序中执行相同的操作呢?

这就是滚动ScrollView时我正在做的事情:

func scrollViewDidScroll(scrollview: UIScrollView) {
    // Get image offset
    var pageSize: Float = Float(scrollView.bounds.size.width)
    var page: Float = floorf((Float(scrollview.contentOffset.x) - pageSize / 2.0) / pageSize) + 1

    if (page >= Float(levelPagesCount)) {
        page = Float(levelPagesCount) - 1;
    }
    else if (page < 0) {
        page = 0;
    }
    pageControl.currentPage = Int(page)

    var dx = scrollview.contentOffset.x

    // When we know offset - we can crop an image and get necessary part of it
    let queue = NSOperationQueue()
    var cgimg: CGImageRef?
    var drawn = false

    // Crop an image in another thread
    queue.addOperationWithBlock() {
        if(!self.locked) {
            self.locked = true
            cgimg = self.imageClass!.getImage(dx)
            drawn = true
        }

        NSOperationQueue.mainQueue().addOperationWithBlock() {
            if(drawn) {
                self.myImageView!.layer.contents = cgimg
                self.locked = false
            }
        }
    } 
}

这就是我裁剪图像的方式

public func getImage(xOffset: CGFloat) -> CGImage {
    // Here 'img' is my wide image
    return CGImageCreateWithImageInRect(img, CGRectMake(xOffset, 0, imgWidth, imgHeight))!
}

我不知道,可能还有其他方法可以做到这一点,可能是我犯了一个可怕的错误,这会导致性能下降。求你帮帮我。

0 个答案:

没有答案