iPhone細いボタン

横に細いボタンをたくさん並べて指をスライドさせるiPhoneアプリのサンプルコードを描いてみます。

#import “ViewController.h”

@interface ViewController ()

@property (nonatomic, weak) UIButton *selected;

@end

@implementation ViewController

– (void)viewDidLoad

{

    [super viewDidLoad];

    

    [self createButtons];

}

– (void)createButtons

{

    for (int i=0; i<32; i++) {

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

        btn.tag = 1;

        btn.frame = CGRectMake(i * 10, CGRectGetMaxY(self.view.frame) – 80, 9.5, 80);

        float hue = (i % 5) * 0.2;

        [btn setBackgroundColor:[UIColor colorWithHue:hue saturation:0.7 brightness:0.9 alpha:1]];

        [btn addTarget:self action:@selector(tap:) forControlEvents:UIControlEventTouchUpInside];

        btn.userInteractionEnabled = NO;

        [self.view addSubview:btn];

    }

}

– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    CGPoint p = [[touches anyObject] locationInView:self.view];

    [self.view.subviews enumerateObjectsUsingBlock:^(UIView *v, NSUInteger idx, BOOL *stop) {

        

        if (self.selected) {

            self.selected.transform = CGAffineTransformIdentity;

            self.selected.userInteractionEnabled = NO;

            self.selected.tag = 1;

        }

        

        if (v.tag == 1 && CGRectContainsPoint(v.frame, p)) {

            self.selected = (UIButton *)v;

            self.selected.userInteractionEnabled = YES;

            self.selected.transform = CGAffineTransformMakeScale(5.0, 5.0);

            self.selected.tag = 2;

            [self.view insertSubview:self.selected atIndex:0];

        }

    }];

}

– (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

    CGPoint p = [[touches anyObject] locationInView:self.view];

    [self.view.subviews enumerateObjectsUsingBlock:^(UIView *v, NSUInteger idx, BOOL *stop) {

        if (v.tag == 1 && CGRectContainsPoint(v.frame, p)) {

            

            if (self.selected != v) {

                self.selected.transform = CGAffineTransformIdentity;

                self.selected.userInteractionEnabled = NO;

                self.selected.tag = 1;

                

                self.selected = (UIButton *)v;

                self.selected.userInteractionEnabled = YES;

                self.selected.transform = CGAffineTransformMakeScale(5.0, 5.0);

                self.selected.tag = 2;

                [self.view insertSubview:self.selected atIndex:0];

            }

        }

    }];

}

– (void)tap:(UIButton *)sender

{

    [UIView animateWithDuration:0.5 animations:^{

        sender.alpha = 0.5;

    } completion:^(BOOL finished) {

        [UIView animateWithDuration:0.5 animations:^{

            sender.alpha = 1.0;

        }];

        self.view.backgroundColor = [sender.backgroundColor colorWithAlphaComponent:0.5];

    }];

}

– (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end