mirror of
https://github.com/wu736139669/ManagerDemo.git
synced 2026-08-05 05:55:42 +00:00
108 lines
2.2 KiB
Objective-C
108 lines
2.2 KiB
Objective-C
//
|
|
// DTAttributedLabel.m
|
|
// DTCoreText
|
|
//
|
|
// Created by Brian Kenny on 1/17/13.
|
|
// Copyright (c) 2013 Drobnik.com. All rights reserved.
|
|
//
|
|
|
|
#import "DTAttributedLabel.h"
|
|
#import "DTCoreTextLayoutFrame.h"
|
|
#import <QuartzCore/QuartzCore.h>
|
|
|
|
@implementation DTAttributedLabel
|
|
|
|
+ (Class)layerClass
|
|
{
|
|
// most likely the label will be less than a screen size and so we don't want any tiling behavior
|
|
return [CALayer class];
|
|
}
|
|
|
|
- (void) setupAttributedLabel
|
|
{
|
|
// we want to relayout the text if height or width change
|
|
self.relayoutMask = DTAttributedTextContentViewRelayoutOnHeightChanged | DTAttributedTextContentViewRelayoutOnWidthChanged;
|
|
|
|
self.layoutFrameHeightIsConstrainedByBounds = YES; // height is not flexible
|
|
}
|
|
|
|
- (id)initWithFrame:(CGRect)frame
|
|
{
|
|
self = [super initWithFrame:frame];
|
|
|
|
if (self)
|
|
{
|
|
[self setupAttributedLabel];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void) awakeFromNib
|
|
{
|
|
[super awakeFromNib];
|
|
[self setupAttributedLabel];
|
|
}
|
|
|
|
#pragma mark - Sizing
|
|
|
|
- (CGSize)intrinsicContentSize
|
|
{
|
|
if (!self.layoutFrame) // creates new layout frame if possible
|
|
{
|
|
return CGSizeMake(-1, -1); // UIViewNoIntrinsicMetric as of iOS 6
|
|
}
|
|
|
|
// we have a layout frame and from this we get the needed size
|
|
CGSize intrisicContentSize = [_layoutFrame intrinsicContentFrame].size;
|
|
return CGSizeMake(intrisicContentSize.width + _edgeInsets.left + _edgeInsets.right,
|
|
intrisicContentSize.height + _edgeInsets.top + _edgeInsets.bottom);
|
|
}
|
|
|
|
#pragma mark - Properties
|
|
|
|
- (NSInteger)numberOfLines
|
|
{
|
|
return _numberOfLines;
|
|
}
|
|
|
|
- (void)setNumberOfLines:(NSInteger)numberOfLines
|
|
{
|
|
if (numberOfLines != _numberOfLines)
|
|
{
|
|
_numberOfLines = numberOfLines;
|
|
[self relayoutText];
|
|
}
|
|
}
|
|
|
|
- (NSLineBreakMode)lineBreakMode
|
|
{
|
|
return _lineBreakMode;
|
|
}
|
|
|
|
- (void)setLineBreakMode:(NSLineBreakMode)lineBreakMode
|
|
{
|
|
if (lineBreakMode != _lineBreakMode)
|
|
{
|
|
_lineBreakMode = lineBreakMode;
|
|
[self relayoutText];
|
|
}
|
|
}
|
|
|
|
- (NSAttributedString*)truncationString
|
|
{
|
|
return _truncationString;
|
|
}
|
|
|
|
- (void)setTruncationString:(NSAttributedString *)truncationString
|
|
{
|
|
if (![truncationString isEqualToAttributedString:_truncationString])
|
|
{
|
|
_truncationString = truncationString;
|
|
[self relayoutText];
|
|
}
|
|
}
|
|
|
|
|
|
@end
|