From da7b0b290f40bfbb7bbf1b172f49514150eb9191 Mon Sep 17 00:00:00 2001 From: Thomas Dohmke Date: Thu, 31 Oct 2013 21:53:10 +0100 Subject: [PATCH] Issue #74: Fix warnings for implicit conversions of UITextAlignment and UILineBreakMode --- Classes/BITAttributedLabel.m | 75 ++++++++++++++++++++++++++++-------- Classes/HockeySDKPrivate.h | 18 ++++----- 2 files changed, 69 insertions(+), 24 deletions(-) diff --git a/Classes/BITAttributedLabel.m b/Classes/BITAttributedLabel.m index dcf222fd3b..1e35596db5 100755 --- a/Classes/BITAttributedLabel.m +++ b/Classes/BITAttributedLabel.m @@ -34,24 +34,57 @@ NSString * const kBITBackgroundLineWidthAttributeName = @"BITBackgroundLineWidth NSString * const kBITBackgroundCornerRadiusAttributeName = @"BITBackgroundCornerRadius"; static inline CTTextAlignment CTTextAlignmentFromUITextAlignment(UITextAlignment alignment) { - switch (alignment) { - case UITextAlignmentLeft: return kCTLeftTextAlignment; - case UITextAlignmentCenter: return kCTCenterTextAlignment; - case UITextAlignmentRight: return kCTRightTextAlignment; - default: return kCTNaturalTextAlignment; - } + switch (alignment) { + case UITextAlignmentLeft: return kCTLeftTextAlignment; + case UITextAlignmentCenter: return kCTCenterTextAlignment; + case UITextAlignmentRight: return kCTRightTextAlignment; + default: return kCTNaturalTextAlignment; + } +} + +static inline CTTextAlignment CTTextAlignmentFromNSTextAlignment(NSTextAlignment alignment) { + switch (alignment) { + case NSTextAlignmentLeft: return kCTLeftTextAlignment; + case NSTextAlignmentCenter: return kCTCenterTextAlignment; + case NSTextAlignmentRight: return kCTRightTextAlignment; + default: return kCTNaturalTextAlignment; + } } static inline CTLineBreakMode CTLineBreakModeFromUILineBreakMode(UILineBreakMode lineBreakMode) { - switch (lineBreakMode) { - case UILineBreakModeWordWrap: return kCTLineBreakByWordWrapping; - case UILineBreakModeCharacterWrap: return kCTLineBreakByCharWrapping; - case UILineBreakModeClip: return kCTLineBreakByClipping; - case UILineBreakModeHeadTruncation: return kCTLineBreakByTruncatingHead; - case UILineBreakModeTailTruncation: return kCTLineBreakByTruncatingTail; - case UILineBreakModeMiddleTruncation: return kCTLineBreakByTruncatingMiddle; - default: return 0; - } + switch (lineBreakMode) { + case UILineBreakModeWordWrap: return kCTLineBreakByWordWrapping; + case UILineBreakModeCharacterWrap: return kCTLineBreakByCharWrapping; + case UILineBreakModeClip: return kCTLineBreakByClipping; + case UILineBreakModeHeadTruncation: return kCTLineBreakByTruncatingHead; + case UILineBreakModeTailTruncation: return kCTLineBreakByTruncatingTail; + case UILineBreakModeMiddleTruncation: return kCTLineBreakByTruncatingMiddle; + default: return 0; + } +} + +static inline CTLineBreakMode CTLineBreakModeFromNSLineBreakMode(NSLineBreakMode lineBreakMode) { + switch (lineBreakMode) { + case NSLineBreakByWordWrapping: return kCTLineBreakByWordWrapping; + case NSLineBreakByCharWrapping: return kCTLineBreakByCharWrapping; + case NSLineBreakByClipping: return kCTLineBreakByClipping; + case NSLineBreakByTruncatingHead: return kCTLineBreakByTruncatingHead; + case NSLineBreakByTruncatingTail: return kCTLineBreakByTruncatingTail; + case NSLineBreakByTruncatingMiddle: return kCTLineBreakByTruncatingMiddle; + default: return 0; + } +} + +static inline UILineBreakMode UILineBreakModeFromNSLineBreakMode(NSLineBreakMode lineBreakMode) { + switch (lineBreakMode) { + case NSLineBreakByWordWrapping: return UILineBreakModeWordWrap; + case NSLineBreakByCharWrapping: return UILineBreakModeCharacterWrap; + case NSLineBreakByClipping: return UILineBreakModeClip; + case NSLineBreakByTruncatingHead: return UILineBreakModeHeadTruncation; + case NSLineBreakByTruncatingTail: return UILineBreakModeTailTruncation; + case NSLineBreakByTruncatingMiddle: return UILineBreakModeMiddleTruncation; + default: return 0; + } } static inline NSTextCheckingType NSTextCheckingTypeFromUIDataDetectorType(UIDataDetectorTypes dataDetectorType) { @@ -84,7 +117,11 @@ static inline NSDictionary * NSAttributedStringAttributesFromLabel(BITAttributed [mutableAttributes setObject:(id)[label.textColor CGColor] forKey:(NSString *)kCTForegroundColorAttributeName]; +#ifdef __IPHONE_6_0 + CTTextAlignment alignment = CTTextAlignmentFromNSTextAlignment(label.textAlignment); +#else CTTextAlignment alignment = CTTextAlignmentFromUITextAlignment(label.textAlignment); +#endif CGFloat lineSpacing = label.leading; CGFloat lineSpacingAdjustment = label.font.lineHeight - label.font.ascender + label.font.descender; CGFloat lineHeightMultiple = label.lineHeightMultiple; @@ -98,7 +135,11 @@ static inline NSDictionary * NSAttributedStringAttributesFromLabel(BITAttributed if (label.numberOfLines != 1) { lineBreakMode = CTLineBreakModeFromUILineBreakMode(UILineBreakModeWordWrap); } else { +#ifdef __IPHONE_6_0 + lineBreakMode = CTLineBreakModeFromNSLineBreakMode(label.lineBreakMode); +#else lineBreakMode = CTLineBreakModeFromUILineBreakMode(label.lineBreakMode); +#endif } CTParagraphStyleSetting paragraphStyles[10] = { @@ -488,7 +529,11 @@ static inline NSAttributedString * NSAttributedStringBySettingColorFromContext(N // Get correct truncationType and attribute position CTLineTruncationType truncationType; NSUInteger truncationAttributePosition = lastLineRange.location; +#ifdef __IPHONE_6_0 + UILineBreakMode lineBreakMode = UILineBreakModeFromNSLineBreakMode(self.lineBreakMode); +#else UILineBreakMode lineBreakMode = self.lineBreakMode; +#endif // Multiple lines, only use UILineBreakModeTailTruncation if (numberOfLines != 1) { diff --git a/Classes/HockeySDKPrivate.h b/Classes/HockeySDKPrivate.h index 2b694b9c66..f7de1ab154 100644 --- a/Classes/HockeySDKPrivate.h +++ b/Classes/HockeySDKPrivate.h @@ -67,21 +67,21 @@ NSBundle *BITHockeyBundle(void); NSString *BITHockeyLocalizedString(NSString *stringToken); NSString *BITHockeyMD5(NSString *str); -#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0 - -#define kBITTextLabelAlignmentCenter UITextAlignmentCenter -#define kBITTextLabelAlignmentLeft UITextAlignmentLeft -#define kBITTextLabelAlignmentRight UITextAlignmentRight -#define kBITLineBreakModeMiddleTruncation UILineBreakModeMiddleTruncation - -#else +#ifdef __IPHONE_6_0 #define kBITTextLabelAlignmentCenter NSTextAlignmentCenter #define kBITTextLabelAlignmentLeft NSTextAlignmentLeft #define kBITTextLabelAlignmentRight NSTextAlignmentRight #define kBITLineBreakModeMiddleTruncation NSLineBreakByTruncatingMiddle -#endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */ +#else + +#define kBITTextLabelAlignmentCenter UITextAlignmentCenter +#define kBITTextLabelAlignmentLeft UITextAlignmentLeft +#define kBITTextLabelAlignmentRight UITextAlignmentRight +#define kBITLineBreakModeMiddleTruncation UILineBreakModeMiddleTruncation + +#endif /* __IPHONE_6_0 */ #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_1