我有一个以编程方式生成的图像,它比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))!
}
我不知道,可能还有其他方法可以做到这一点,可能是我犯了一个可怕的错误,这会导致性能下降。求你帮帮我。