diff options
Diffstat (limited to 'samples/Objective-C/StyleViewController.m')
| -rw-r--r-- | samples/Objective-C/StyleViewController.m | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/samples/Objective-C/StyleViewController.m b/samples/Objective-C/StyleViewController.m new file mode 100644 index 0000000..7018b5e --- /dev/null +++ b/samples/Objective-C/StyleViewController.m @@ -0,0 +1,185 @@ +// +// Copyright 2009-2011 Facebook +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "StyleViewController.h" + +#import "StyleView.h" + +NSString* kTextStyleType = @"text"; +NSString* kViewStyleType = @"view"; +NSString* kImageStyleType = @"image"; + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +@implementation StyleViewController + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (id)initWithStyleName:(NSString*)name styleType:(NSString*)styleType { + if (self = [super initWithNibName:nil bundle:nil]) { + self.title = name; + + _style = [[[TTStyleSheet globalStyleSheet] styleWithSelector:name] retain]; + _styleHighlight = [[[TTStyleSheet globalStyleSheet] + styleWithSelector: name + forState: UIControlStateHighlighted] retain]; + _styleDisabled = [[[TTStyleSheet globalStyleSheet] + styleWithSelector: name + forState: UIControlStateDisabled] retain]; + _styleSelected = [[[TTStyleSheet globalStyleSheet] + styleWithSelector: name + forState: UIControlStateSelected] retain]; + + _styleType = [styleType copy]; + } + + return self; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)dealloc { + TT_RELEASE_SAFELY(_style); + TT_RELEASE_SAFELY(_styleHighlight); + TT_RELEASE_SAFELY(_styleDisabled); + TT_RELEASE_SAFELY(_styleSelected); + TT_RELEASE_SAFELY(_styleType); + + [super dealloc]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +#pragma mark UIViewController + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)addTextView:(NSString*)title frame:(CGRect)frame style:(TTStyle*)style { + CGRect textFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20)); + StyleView* text = [[StyleView alloc] + initWithFrame:textFrame]; + text.text = title; + TTStyleContext* context = [[TTStyleContext alloc] init]; + context.frame = frame; + context.delegate = text; + context.font = [UIFont systemFontOfSize:[UIFont systemFontSize]]; + CGSize size = [style addToSize:CGSizeZero context:context]; + TT_RELEASE_SAFELY(context); + + size.width += 20; + size.height += 20; + textFrame.size = size; + text.frame = textFrame; + + text.style = style; + text.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1]; + text.autoresizingMask = + UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; + + [self.view addSubview:text]; + TT_RELEASE_SAFELY(text); +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)addView:(CGRect)frame style:(TTStyle*)style { + CGRect viewFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20)); + StyleView* view = [[StyleView alloc] + initWithFrame:viewFrame]; + + view.style = style; + view.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1]; + view.autoresizingMask = + UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; + + [self.view addSubview:view]; + TT_RELEASE_SAFELY(view); +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)addImageView:(CGRect)frame style:(TTStyle*)style { + CGRect viewFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20)); + TTImageView* view = [[TTImageView alloc] + initWithFrame:viewFrame]; + + view.urlPath = @"bundle://Icon.png"; + view.style = style; + view.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1]; + view.autoresizingMask = + UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; + CGRect imageFrame = view.frame; + imageFrame.size = view.image.size; + view.frame = imageFrame; + + [self.view addSubview:view]; + TT_RELEASE_SAFELY(view); +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)loadView { + [super loadView]; + + CGRect frame = self.view.bounds; + frame.size.height /= 4; + + if ([_styleType isEqualToString:kTextStyleType]) { + [self addTextView:@"UIControlStateNormal" frame:frame style:_style]; + + frame.origin.y += frame.size.height; + [self addTextView:@"UIControlStateHighlighted" frame:frame style:_styleHighlight]; + + frame.origin.y += frame.size.height; + [self addTextView:@"UIControlStateDisabled" frame:frame style:_styleDisabled]; + + frame.origin.y += frame.size.height; + [self addTextView:@"UIControlStateSelected" frame:frame style:_styleSelected]; + + } else if ([_styleType isEqualToString:kViewStyleType]) { + [self addView:frame style:_style]; + + frame.origin.y += frame.size.height; + [self addView:frame style:_styleHighlight]; + + frame.origin.y += frame.size.height; + [self addView:frame style:_styleDisabled]; + + frame.origin.y += frame.size.height; + [self addView:frame style:_styleSelected]; + + } else if ([_styleType isEqualToString:kImageStyleType]) { + [self addImageView:frame style:_style]; + + frame.origin.y += frame.size.height; + [self addImageView:frame style:_styleHighlight]; + + frame.origin.y += frame.size.height; + [self addImageView:frame style:_styleDisabled]; + + frame.origin.y += frame.size.height; + [self addImageView:frame style:_styleSelected]; + + } +} + + +@end + |
