【发布时间】:2014-07-30 17:35:49
【问题描述】:
感谢阅读。
我有一张背景图片和一张前景图片。前景图像位于 UIScrollView 中,因此可以在背景图像上调整大小和重新定位。背景图像设置为 Aspect Fit。我有一个将两个 UIImage 组合成一个新 UIImage 的函数。这很好用,但我无法正确理解一个视图相对于另一个视图的 x,y 坐标。
这里有一些代码:
CGFloat bgImageScale = self.backgroundImageView.bounds.size.height / self.bgImage.size.height; // Gives me the AspectFit scale.
CGFloat bgOffsetX = (self.backgroundImageView.bounds.size.width - self.bgImage.size.width * bgImageScale) / 2.0;
CGFloat bgOffsetY = 0.0;
CGFloat fgImageScale = self.fgImageScrollView.zoomScale;
CGFloat fgOffsetX = -self.fgImageScrollView.contentOffset.x;
CGFloat fgOffsetY = -self.fgImageScrollView.contentOffset.y;
CGPoint imageOffset = CGPointMake((fgOffsetX - bgOffsetX) * bgImageScale, (fgOffsetY - bgOffsetY) * bgImageScale);
[self.delegate completedOverlayImage:
[self mergeImage:self.fgImage
withImage:self.bgImage
usingAlpha:0.5f
withOffset:imageOffset
andScale:fgImageScale / bgImageScale
]];
简而言之,completedOverlayImage 代码做了以下相关操作:
[bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
[topImage drawInRect:CGRectMake(imageOffset.x, imageOffset.y, newSize.width*imageScale, newSize.height*imageScale) blendMode:kCGBlendModeNormal alpha:alpha];
所以我只是无法正确获取 imageOffset 的内容,以使新图像覆盖与屏幕上显示的相同。
顺便说一下,这个应用程序仅适用于 iOS 7 及更高版本。
有人可以帮忙吗?谢谢。
【问题讨论】:
标签: ios objective-c uiscrollview uiimage