//
|
// MWCaptionView.m
|
// MWPhotoBrowser
|
//
|
// Created by Michael Waterfall on 30/12/2011.
|
// Copyright (c) 2011 __MyCompanyName__. All rights reserved.
|
//
|
|
#import "MWCommon.h"
|
#import "MWCaptionView.h"
|
#import "MWPhoto.h"
|
|
static const CGFloat labelPadding = 10;
|
|
// Private
|
@interface MWCaptionView () {
|
id <MWPhoto> _photo;
|
UILabel *_label;
|
}
|
@end
|
|
@implementation MWCaptionView
|
|
- (id)initWithPhoto:(id<MWPhoto>)photo {
|
self = [super initWithFrame:CGRectMake(0, 0, 320, 44)]; // Random initial frame
|
if (self) {
|
self.userInteractionEnabled = NO;
|
_photo = photo;
|
self.barStyle = UIBarStyleBlackTranslucent;
|
self.tintColor = nil;
|
self.barTintColor = nil;
|
self.barStyle = UIBarStyleBlackTranslucent;
|
[self setBackgroundImage:nil forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
|
self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
|
[self setupCaption];
|
}
|
return self;
|
}
|
|
- (CGSize)sizeThatFits:(CGSize)size {
|
CGFloat maxHeight = 9999;
|
if (_label.numberOfLines > 0) maxHeight = _label.font.leading*_label.numberOfLines;
|
CGSize textSize = [_label.text boundingRectWithSize:CGSizeMake(size.width - labelPadding*2, maxHeight)
|
options:NSStringDrawingUsesLineFragmentOrigin
|
attributes:@{NSFontAttributeName:_label.font}
|
context:nil].size;
|
return CGSizeMake(size.width, textSize.height + labelPadding * 2);
|
}
|
|
- (void)setupCaption {
|
_label = [[UILabel alloc] initWithFrame:CGRectIntegral(CGRectMake(labelPadding, 0,
|
self.bounds.size.width-labelPadding*2,
|
self.bounds.size.height))];
|
_label.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
|
_label.opaque = NO;
|
_label.backgroundColor = [UIColor clearColor];
|
_label.textAlignment = NSTextAlignmentCenter;
|
_label.lineBreakMode = NSLineBreakByWordWrapping;
|
|
_label.numberOfLines = 0;
|
_label.textColor = [UIColor whiteColor];
|
_label.font = [UIFont systemFontOfSize:17];
|
if ([_photo respondsToSelector:@selector(caption)]) {
|
_label.text = [_photo caption] ? [_photo caption] : @" ";
|
}
|
[self addSubview:_label];
|
}
|
|
|
@end
|