練習目標:http://www.youtube.com/watch?v=xiHBN2B1Vt4&list=UUPRP4bs_BNpx6XWI5Wm7O5g
老師範例:DrawSomething
我的作品:homework0810
在這個範例中,我使用了兩個viewController,去控制兩個頁面的畫面。
第一個用來顯示動畫的地方的viewController如下,
在這個頁面上除了球之外,還會有一個控制開關的鈕,當打開時代表不去管路徑如何直接讓球到圓點,
而關閉則會讓球一步步照著所繪的路線移動。
#import “ViewController.h”
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UISwitch *straightSwitch;
@property (weak, nonatomic) IBOutlet UIImageView *myBall;
@end
@implementation ViewController
– (void)viewDidLoad
{
[super viewDidLoad];
}
– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
/* 當切換畫面時會呼叫這個函數,可在此設定接收繪圖路徑資料的接收者為自己*/
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@”toDrawing”]){
ViewController2 * modalView = (ViewController2 *) segue.destinationViewController;
modalView.delegate = self;
}
}
/*這個函數是讓另一個ViewController去呼叫的,傳入path*/
-(void) DrawViewController:(ViewController2 *) ViewController path:(NSMutableArray *) path{
if([path count] == 0) return;
if(self.straightSwitch.on){
NSValue *value = [path objectAtIndex:[path count]-1];
[self performSelector:@selector(changePosition:) withObject:value afterDelay:0];
}else{
for (int i=0; i<[path count]; i++) {
NSValue *value = [path objectAtIndex:i];
[self performSelector:@selector(changePosition:) withObject:value afterDelay:i*0.1];
}
}
}
/*改變球的位置*/
-(void)changePosition:(NSValue *) value{
CGPoint point = [value CGPointValue];
CGRect rect = [self.myBall frame];
rect.origin.x = point.x - 25;
rect.origin.y = point.y - 25;
[self.myBall setFrame:rect];
}
@end[/code]
第二個view則是用來讓使用者繪製路線的地方,
在這邊我又將繪圖的地方獨立出來成為另一個繪圖版
而我讓view與繪圖間用notification來傳遞資料。
這個則是繪圖版的code
檔案下載:homework0810