1

我有一个像这样的 51x51px 的 glView。

...
glContext = EAGLContext(API: .OpenGLES2)
glView = GLKView()
glView.context = glContext
ciContext = CIContext(EAGLContext: glContext)
glView.layer.borderColor = UIColor.redColor().CGColor
glView.layer.borderWidth = 3
glView.translatesAutoresizingMaskIntoConstraints = false

widthConstraint = NSLayoutConstraint(item: glView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 51)
loupeImageView.addConstraint(widthConstraint)
heightConstraint = NSLayoutConstraint(item: glView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 51)
loupeImageView.addConstraint(heightConstraint)
...

稍后我将image(从 AVpreviewlayer 接收)的中心部分绘制到 glView 的 EAGL 上下文中,如下所示:

ciContext.drawImage(image, inRect: CGRectMake(0, 0, 50, 50), 
  fromRect: CGRect(x: (image.extent.width/2)-(50/2), y: (image.extent.height / 2)-(50/2), width: source, height: source))
glView.display()

基本上代码可以工作,但完全相同的代码在 iPad 和 iPhone5 上的行为不同。结果如下所示。红边矩形是 glView。

iPhone 上的 glView

iPad 上的 glView

在 iPhone 上,红色矩形内的黑色部分(我正在绘制的图像)应该完全填充矩形,例如在 iPad 上......而不仅仅是左下角。

有人知道这里有什么问题吗?

问候克里斯

ps.我在两台设备上都使用 iOS 9.2.1

4

0 回答 0