12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //
- // SSLabel.m
- // SSToolkit
- //
- // Created by Sam Soffes on 7/12/10.
- // Copyright 2010-2011 Sam Soffes. All rights reserved.
- //
- #import "SSLabel.h"
- @interface SSLabel ()
- - (void)_initialize;
- @end
- @implementation SSLabel
- #pragma mark - Accessors
- @synthesize verticalTextAlignment = _verticalTextAlignment;
- - (void)setVerticalTextAlignment:(SSLabelVerticalTextAlignment)verticalTextAlignment {
- _verticalTextAlignment = verticalTextAlignment;
- [self setNeedsLayout];
- }
- @synthesize textEdgeInsets = _textEdgeInsets;
- - (void)setTextEdgeInsets:(UIEdgeInsets)textEdgeInsets {
- _textEdgeInsets = textEdgeInsets;
-
- [self setNeedsLayout];
- }
- #pragma mark - UIView
- - (id)initWithCoder:(NSCoder *)aDecoder {
- if ((self = [super initWithCoder:aDecoder])) {
- [self _initialize];
- }
- return self;
- }
- - (id)initWithFrame:(CGRect)aFrame {
- if ((self = [super initWithFrame:aFrame])) {
- [self _initialize];
- }
- return self;
- }
- #pragma mark - UILabel
- - (void)drawTextInRect:(CGRect)rect {
- rect = UIEdgeInsetsInsetRect(rect, _textEdgeInsets);
-
- if (self.verticalTextAlignment == SSLabelVerticalTextAlignmentTop) {
- CGSize sizeThatFits = [self sizeThatFits:rect.size];
- rect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, sizeThatFits.height);
- } else if (self.verticalTextAlignment == SSLabelVerticalTextAlignmentBottom) {
- CGSize sizeThatFits = [self sizeThatFits:rect.size];
- rect = CGRectMake(rect.origin.x, rect.origin.y + (rect.size.height - sizeThatFits.height), rect.size.width, sizeThatFits.height);
- }
-
- [super drawTextInRect:rect];
- }
- #pragma mark - Private
- - (void)_initialize {
- self.verticalTextAlignment = SSLabelVerticalTextAlignmentMiddle;
- self.textEdgeInsets = UIEdgeInsetsZero;
- }
- @end
|