丸テーブルの上に、カラーボールをおいてから
GOボタンを押してみよう!
くるくる、くるくる〜。どんな形がみえるかな?
という感じの子供向けiPhoneアプリのサンプルコード書いてみた。
ポイント
カラーボールを丸テーブルごと回すために、
丸テーブルのxy座標に変換してから、
テーブルのsubviewとしてAddしています。
環境
今回つくったiPhoneアプリサンプルは、
XcodeのiOS6 iPhone Simulatorで動かしています。
サンプルコード
#import “ViewController.h”
#import <QuartzCore/QuartzCore.h>
#define UIColorHex(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
@interface ViewController () {
UIView *table;
int counter;
}
@end
@implementation ViewController
– (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self createTable];
[self createUI];
}
– (void)createUI
{
NSArray *colors = [NSArray arrayWithObjects:UIColorHex(0xD91A60),UIColorHex(0x3A1053),UIColorHex(0x4B71BF),UIColorHex(0x32A67B),UIColorHex(0x294190), nil];
for (int i=0; i<10; i++) {
int colorIndex = i % 5;
UIColor *color = [colors objectAtIndex:colorIndex];
float x = (i % 5) * 40 + 10;
float y = (i / 5) * 40 + 380;
UIView *item = [[UIView alloc] initWithFrame:CGRectMake(x, y, 30, 30)];
item.backgroundColor = color;
item.layer.cornerRadius = 15;
[self.view addSubview:item];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[item addGestureRecognizer:pan];
}
UILabel *start = [[UILabel alloc] init];
start.font = [UIFont boldSystemFontOfSize:40];
start.text = @”GO”;
start.textColor = [UIColor whiteColor];
[start sizeToFit];
start.center = CGPointMake(280, 420);
start.backgroundColor = [UIColor blackColor];
start.layer.cornerRadius = 5;
start.userInteractionEnabled = YES;
[self.view addSubview:start];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(go)];
[start addGestureRecognizer:tap];
}
– (void)pan:(UIPanGestureRecognizer*)gr
{
CGPoint p = [gr locationInView:self.view];
gr.view.center = p;
if (gr.state == UIGestureRecognizerStateEnded) {
CGPoint pt = [table convertPoint:p fromView:self.view];
if ([table hitTest:pt withEvent:nil]) {
gr.view.center = pt;
[table addSubview:gr.view];
}
}
}
– (void)createTable
{
table = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
table.backgroundColor = [UIColor whiteColor];
table.layer.cornerRadius = 150;
table.layer.shadowOffset = CGSizeMake(0,0);
table.layer.shadowOpacity = 1;
table.layer.shadowRadius = 2;
table.layer.shadowColor = [UIColor blackColor].CGColor;
table.center = CGPointMake(160, 180);
[self.view addSubview:table];
}
– (void)go
{
[NSTimer scheduledTimerWithTimeInterval:1.0/60.0 target:self selector:@selector(tick:) userInfo:nil repeats:YES];
}
– (void)tick:(NSTimer*)sender
{
if (counter > 300) {
counter = 0;
[sender invalidate];
}
float d = counter * M_PI / 1000.0;
table.transform = CGAffineTransformRotate(table.transform, d);
counter++;
}
– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end