我在iTunesU(193P)上採用了免費的Stanford課程,我們創建了一個UIView的子類,並創建了一個名爲scale的公共屬性。我們的想法是,當我們捏的時候,視圖的大小會相應地改變,但我對於財產規模的調整者何時被調用感到困惑。這裏是下面的相關代碼:什麼時候從UIView子類調用setter方法
@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方法時,何時或如何繼續調用setScale方法?也許我在這裏錯過了一些東西。
我明白#2是你所說的,但不是全部#1。我不清楚你在之後說了什麼......「你可以在你的UIView的setter方法中將這段代碼添加到你的UIViewController(子類)中....」。你指的是什麼代碼? – cspam
我的意思是我理解#1而不是#2,對不起 – cspam
我在#2中說的是,你的代碼是正確的,它和你的UIView子類一樣。但是您需要在您創建的UIViewController子類中使用我的代碼。我的代碼會在有手勢時觸發,而我的代碼會觸發你的代碼,因爲我的代碼將目標(方法所在的位置)設置爲你的UIView子類(FaceView)。我更新了代碼。 – Spectravideo328