十字を使って模様をつくるiPhoneアプリのサンプルコードを描いてみます。
#import “ViewController.h”
@interface ViewController ()
@property (nonatomic) float size;
@end
@implementation ViewController
– (void)viewDidLoad
{
[super viewDidLoad];
[self createSlider];
[self updateCross];
}
– (void)createSlider
{
UISlider *slider = [[UISlider alloc] init];
slider.minimumValue = 5;
slider.maximumValue = 40;
slider.center = CGPointMake(CGRectGetMidX(self.view.frame), 50);
slider.value = 10;
[self.view addSubview:slider];
self.size = slider.value;
[slider addTarget:self action:@selector(changeValue:) forControlEvents:UIControlEventValueChanged];
}
– (void)changeValue:(UISlider *)sender
{
self.size = sender.value;
[self updateCross];
}
– (void)updateCross
{
[self.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (![obj isKindOfClass:[UISlider class]]) {
[obj removeFromSuperview];
}
}];
float l = CGRectGetMaxX(self.view.frame) / 10;
for (int i=0; i<10 * 10; i++) {
float x = (i % 10) * l;
float y = (i / 10) * l + 80;
UIView *cross = [[UIView alloc] initWithFrame:CGRectMake(x, y, l, l)];
cross.backgroundColor = [UIColor redColor];
[self.view addSubview:cross];
CALayer *vertical = [CALayer layer];
vertical.frame = CGRectMake(0, 0, self.size * 0.4, self.size);
vertical.position = CGPointMake(l/2.0, l/2.0);
vertical.backgroundColor = [UIColor whiteColor].CGColor;
[cross.layer addSublayer:vertical];
CALayer *horizontal = [CALayer layer];
horizontal.frame = CGRectMake(0, 0, self.size, self.size * 0.4);
horizontal.position = CGPointMake(l/2.0, l/2.0);
horizontal.backgroundColor = [UIColor whiteColor].CGColor;
[cross.layer addSublayer:horizontal];
}
}
@end