我有一个像这样的 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 上,红色矩形内的黑色部分(我正在绘制的图像)应该完全填充矩形,例如在 iPad 上......而不仅仅是左下角。
有人知道这里有什么问题吗?
问候克里斯
ps.我在两台设备上都使用 iOS 9.2.1