Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions ALAlertBanner/ALAlertBanner.m
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,26 @@ this software and associated documentation files (the "Software"), to deal in

static CGFloat const kForceHideAnimationDuration = 0.1f;


@interface NSMutableParagraphStyle (LineBreak)
+ (NSMutableParagraphStyle *)defaultParagraphStyleWithLineBreakMode:(NSLineBreakMode)breakMode;
@end
@implementation NSMutableParagraphStyle(LineBreak)
+ (NSMutableParagraphStyle *)defaultParagraphStyleWithLineBreakMode:(NSLineBreakMode)breakMode {
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:breakMode];
return style;
}
@end

#define AL_DEVICE_ANIMATION_DURATION UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? kRotationDurationIPad : kRotationDurationIphone;

//macros referenced from MBProgressHUD. cheers to @matej
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000
#define AL_SINGLELINE_TEXT_HEIGHT(text, font) [text length] > 0 ? [text sizeWithAttributes:nil].height : 0.f;
#define AL_MULTILINE_TEXT_HEIGHT(text, font, maxSize, mode) [text length] > 0 ? [text boundingRectWithSize:maxSize \
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) \
attributes:nil \
attributes:@{NSFontAttributeName: font, NSParagraphStyleAttributeName: [NSMutableParagraphStyle defaultParagraphStyleWithLineBreakMode:mode]} \
context:NULL].size.height : 0.f;
#else
#define AL_SINGLELINE_TEXT_HEIGHT(text, font) [text length] > 0 ? [text sizeWithFont:font].height : 0.f;
Expand Down Expand Up @@ -174,12 +186,12 @@ - (void)setupSubviews {
_titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:13.f];
_titleLabel.textColor = [UIColor colorWithWhite:1.f alpha:0.9f];
_titleLabel.textAlignment = NSTextAlignmentLeft;
_titleLabel.numberOfLines = 1;
_titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;
_titleLabel.layer.shadowColor = [UIColor blackColor].CGColor;
_titleLabel.layer.shadowOffset = CGSizeMake(0.f, -1.f);
_titleLabel.layer.shadowOpacity = 0.3f;
_titleLabel.layer.shadowRadius = 0.f;
_titleLabel.numberOfLines = 0;
_titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
[self addSubview:_titleLabel];

_subtitleLabel = [[UILabel alloc] init];
Expand Down Expand Up @@ -531,7 +543,7 @@ - (void)setInitialLayout {
BOOL isSuperviewKindOfWindow = ([superview isKindOfClass:[UIWindow class]]);

CGSize maxLabelSize = CGSizeMake(superview.bounds.size.width - (kMargin*3) - self.styleImageView.image.size.width, CGFLOAT_MAX);
CGFloat titleLabelHeight = AL_SINGLELINE_TEXT_HEIGHT(self.titleLabel.text, self.titleLabel.font);
CGFloat titleLabelHeight = AL_MULTILINE_TEXT_HEIGHT(self.titleLabel.text, self.titleLabel.font, maxLabelSize, self.titleLabel.lineBreakMode);
CGFloat subtitleLabelHeight = AL_MULTILINE_TEXT_HEIGHT(self.subtitleLabel.text, self.subtitleLabel.font, maxLabelSize, self.subtitleLabel.lineBreakMode);
CGFloat heightForSelf = titleLabelHeight + subtitleLabelHeight + (self.subtitleLabel.text == nil || self.titleLabel.text == nil ? kMargin*2 : kMargin*2.5);

Expand Down Expand Up @@ -578,7 +590,7 @@ - (void)setInitialLayout {

- (void)updateSizeAndSubviewsAnimated:(BOOL)animated {
CGSize maxLabelSize = CGSizeMake(self.superview.bounds.size.width - (kMargin*3.f) - self.styleImageView.image.size.width, CGFLOAT_MAX);
CGFloat titleLabelHeight = AL_SINGLELINE_TEXT_HEIGHT(self.titleLabel.text, self.titleLabel.font);
CGFloat titleLabelHeight = AL_MULTILINE_TEXT_HEIGHT(self.titleLabel.text, self.titleLabel.font, maxLabelSize, self.titleLabel.lineBreakMode);
CGFloat subtitleLabelHeight = AL_MULTILINE_TEXT_HEIGHT(self.subtitleLabel.text, self.subtitleLabel.font, maxLabelSize, self.subtitleLabel.lineBreakMode);
CGFloat heightForSelf = titleLabelHeight + subtitleLabelHeight + (self.subtitleLabel.text == nil || self.titleLabel.text == nil ? kMargin*2.f : kMargin*2.5f);

Expand Down