View difference between Paste ID: rm8h6YFV and r2aYjMVL
SHOW: | | - or go back to the newest paste.
1
//
2
//  SampleButton.m
3
//  insetSample
4
//
5
//  Copyright (c) 2012  Dirk-Willem van Gulik. All rights reserved.
6
//
7
//  Licensed under the ASL or BSD license.
8
9
#import "SampleButton.h"
10
11
@implementation SampleButton
12
13
- (id)initWithCoder:(NSCoder *)decoder {
14
    self = [super initWithCoder:decoder];
15
    if (self) {
16
        [self completeInit];
17
    }
18
    return self;
19
}
20
21
-(void)setType:(int)aType { type = aType; [self completeInit]; }
22
-(int)type { return type; }
23
24
-(void)completeInit {
25
    UIImage * base = [UIImage imageNamed:@"button.png"];
26
    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(20,20,20,20);
27
28
    CGContextRef ctx;
29
    UIImage * img;
30
    
31
    switch (type) {
32
        case 1: // with insets, drawn straight
33
            base = [base resizableImageWithCapInsets:edgeInsets];
34
        case 0: // without insets, drawn straight
35
            img = base;        
36
            break;
37
        case 3:  // with insets; dranw through an image context
38
            base = [base resizableImageWithCapInsets:edgeInsets];
39
        case 2:  // without insets; dranw through an image context
40
            UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
41
            ctx = UIGraphicsGetCurrentContext();
42
            CGContextDrawImage(ctx, CGRectMake(0,0,self.bounds.size.width,
43
                                               self.bounds.size.height), [base CGImage]);
44
45
            img = UIGraphicsGetImageFromCurrentImageContext();
46
            UIGraphicsEndImageContext();
47
            break;
48
        default:
49
            break;
50
    }
51
52
    [self setImage:img forState:UIControlStateNormal];
53
54
    // Esnure that the image is (also) scaled 'up' and not just down in
55
    // a non aspect preserving manner.
56
    //
57
    [[self imageView] setContentMode: UIViewContentModeScaleToFill];
58
    self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
59
    self.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
60
61
}
62
63
@end