我正在参加关于 iTunesU(193P) 的免费斯坦福课程,我们创建了一个作为 UIView 子类的类,并创建了一个名为 scale 的公共属性。这个想法是,当我们捏合时,视图的比例会相应改变,但我对何时调用属性比例的设置器感到困惑。这是下面的相关代码:
@interface FaceView : UIView
@property (nonatomic) CGFloat scale; //anyone who wants do publicly can set my scale
-(void)pinch:(UIPinchGestureRecognizer *)gesture;
@end
@synthesize scale = _scale;
#define DEFAULT_SCALE 0.90
-(CGFloat)scale{
if(!_scale){
return DEFAULT_SCALE;
}else {
return _scale;
}
}
-(void)setScale:(CGFloat)scale{
NSLog(@"setting the scale");
if(scale != _scale){
_scale = scale;
[self setNeedsDisplay];
}
}
-(void)pinch:(UIPinchGestureRecognizer *)gesture{
if ( (gesture.state == UIGestureRecognizerStateChanged) || (gesture.state == UIGestureRecognizerStateEnded)){
self.scale *= gesture.scale;
gesture.scale = 1;
}
}
当我处于“捏合模式”时,在我捏合时会继续调用 setScale 方法,因为我的 NSLog 语句会打印出来,直到我停止捏合。当没有任何代码以编程方式调用 setScale 方法时,何时或如何继续调用它?也许我在这里错过了一些东西。