這個是ios11 之后有關(guān)訪問UI的屬性的方法都不能在支線程中訪問, 改一下就可以了
- (void)recalculateViewGeometry;
{
? ? dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? CGSize currentViewSize = self.bounds.size;
? ? ? ? runSynchronouslyOnVideoProcessingQueue(^{
? ? ? ? ? ? CGFloat heightScaling, widthScaling;
? ? ? ? ? ? //? ? CGFloat imageAspectRatio = inputImageSize.width / inputImageSize.height;
? ? ? ? ? ? //? ? CGFloat viewAspectRatio = currentViewSize.width / currentViewSize.height;
? ? ? ? ? ? CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(inputImageSize, self.bounds);
? ? ? ? ? ? switch(_fillMode)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case kGPUImageFillModeStretch:
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? widthScaling = 1.0;
? ? ? ? ? ? ? ? ? ? heightScaling = 1.0;
? ? ? ? ? ? ? ? }; break;
? ? ? ? ? ? ? ? case kGPUImageFillModePreserveAspectRatio:
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? widthScaling = insetRect.size.width / currentViewSize.width;
? ? ? ? ? ? ? ? ? ? heightScaling = insetRect.size.height / currentViewSize.height;
? ? ? ? ? ? ? ? }; break;
? ? ? ? ? ? ? ? case kGPUImageFillModePreserveAspectRatioAndFill:
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //? ? ? ? ? ? CGFloat widthHolder = insetRect.size.width / currentViewSize.width;
? ? ? ? ? ? ? ? ? ? widthScaling = currentViewSize.height / insetRect.size.height;
? ? ? ? ? ? ? ? ? ? heightScaling = currentViewSize.width / insetRect.size.width;
? ? ? ? ? ? ? ? }; break;
? ? ? ? ? ? }
? ? ? ? ? ? imageVertices[0] = -widthScaling;
? ? ? ? ? ? imageVertices[1] = -heightScaling;
? ? ? ? ? ? imageVertices[2] = widthScaling;
? ? ? ? ? ? imageVertices[3] = -heightScaling;
? ? ? ? ? ? imageVertices[4] = -widthScaling;
? ? ? ? ? ? imageVertices[5] = heightScaling;
? ? ? ? ? ? imageVertices[6] = widthScaling;
? ? ? ? ? ? imageVertices[7] = heightScaling;
? ? ? ? });
? ? });
//? ? static const GLfloat imageVertices[] = {
//? ? ? ? -1.0f, -1.0f,
//? ? ? ? 1.0f, -1.0f,
//? ? ? ? -1.0f,? 1.0f,
//? ? ? ? 1.0f,? 1.0f,
//? ? };
}