iPhone十字パターン

十字を使って模様をつくる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