2013-12-15 3 views
0

내 인터페이스에 두 개의 CFFloat 속성이 있습니다. 제스처 인식기에서 사용하려고 시도하고 있지만 "allTouchesAreOnPreviewLayer"가 포함 된 if 문에서 "유효하지 않은 피연산자를 이진 표현식 float 및 double .."으로 계속 가져옵니다. 이 문제를 올바르게 해결하는 방법을 잘 모르겠습니다. 더 많은 정보가 필요하면 알려주세요. 핀치를 구현하여 UIView를 확대/축소하려고합니다.iOS CGFloat 시맨틱 문제 - 잘못된 피연산자

인터페이스 속성 :

CGFloat *startingScale; 
CGFloat *effectiveScale; 

구현 방법 :

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 
if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) { 

    startingScale = effectiveScale; 
} 

return YES; 
} 

-(IBAction)handlePinchGesture:(UIPinchGestureRecognizer *)recognizer 
{ 
NSLog(@"Pinched View"); 


BOOL allTouchesAreOnThePreviewLayer = YES; 
NSUInteger numTouches = [recognizer numberOfTouches], i; 
for (i = 0; i < numTouches; ++i) { 
    CGPoint location = [recognizer locationOfTouch:i inView:imagePreview]; 
    CGPoint convertedLocation = [captureVideoPreviewLayer convertPoint:location fromLayer:captureVideoPreviewLayer.superlayer]; 
    if (! [captureVideoPreviewLayer containsPoint:convertedLocation]) { 
     allTouchesAreOnThePreviewLayer = NO; 
     break; 
    } 
} 

// 에러 현재 위치 :

if (allTouchesAreOnThePreviewLayer) 
{ 
    effectiveScale = startingScale * recognizer.scale; 
    if (effectiveScale < 1.0) 
     effectiveScale = 1.0; 
    CGFloat maxScaleAndCropFactor = [[stillImageOutput connectionWithMediaType:AVMediaTypeVideo] videoMaxScaleAndCropFactor]; 
    if (effectiveScale > maxScaleAndCropFactor) 
     effectiveScale = maxScaleAndCropFactor; 
    [CATransaction begin]; 
    [CATransaction setAnimationDuration:.025]; 
    [captureVideoPreviewLayer setAffineTransform:CGAffineTransformMakeScale(*(effectiveScale), *(effectiveScale))]; 
    [CATransaction commit]; 
} 



} 

답변

0

CFGloat가 원시 형이 아닌 클래스입니다. 선언문에서 별표를 제거하십시오. 원하는 항목 :

CGFloat startingScale; 
CGFloat effectiveScale; 
+0

@robmayoff - 감사합니다. 나는 "기본"이 제대로 들리지 않는다는 것을 알았습니다. :) – rmaddy