Files
ManagerDemo/Pods/DTCoreText/Core/Source/DTDictationPlaceholderView.m
T
2014-08-08 13:27:54 +08:00

119 lines
2.8 KiB
Objective-C

//
// DTDictationPlaceholderView.m
// DTRichTextEditor
//
// Created by Oliver Drobnik on 05.02.13.
// Copyright (c) 2013 Cocoanetics. All rights reserved.
//
#import "DTDictationPlaceholderView.h"
// if you change any of these then also make sure to adjust the sizes in DTDictationPlaceholderTextAttachment
#define DOT_WIDTH 10.0f
#define DOT_DISTANCE 2.5f
#define DOT_OUTSIDE_MARGIN 3.0f
@implementation DTDictationPlaceholderView
{
NSUInteger _phase;
NSTimer *_phaseTimer;
}
+ (DTDictationPlaceholderView *)placeholderView;
{
return [[DTDictationPlaceholderView alloc] initWithFrame:CGRectZero];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [UIColor clearColor];
[self sizeToFit];
}
return self;
}
- (CGSize)sizeThatFits:(CGSize)size
{
return CGSizeMake(DOT_OUTSIDE_MARGIN*2.0f + DOT_WIDTH*3.0f + DOT_DISTANCE*2.0f, DOT_OUTSIDE_MARGIN*2.0f + DOT_WIDTH);
}
- (UIColor *)_lightDotColor
{
return [UIColor colorWithRed:(CGFloat)(238.0/255.0) green:(CGFloat)(128.0/255.0) blue:(CGFloat)(238.0/255.0) alpha:1.0];
}
- (UIColor *)_darkDotColor
{
return [UIColor colorWithRed:(CGFloat)(191.0/255.0) green:(CGFloat)(51.0/255.0) blue:(CGFloat)(191.0/255.0) alpha:1.0];
}
- (void)willMoveToSuperview:(UIView *)newSuperview
{
[super willMoveToSuperview:newSuperview];
[_phaseTimer invalidate], _phaseTimer = nil;
if (newSuperview)
{
_phaseTimer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(_phaseTimerTick:) userInfo:nil repeats:YES];
}
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect dotRect = CGRectMake(DOT_OUTSIDE_MARGIN, 4, DOT_WIDTH, DOT_WIDTH);
if (_phase==0)
{
CGContextSetFillColorWithColor(ctx, [self _darkDotColor].CGColor);
}
else
{
CGContextSetFillColorWithColor(ctx, [self _lightDotColor].CGColor);
}
CGContextFillEllipseInRect(ctx, dotRect);
dotRect.origin.x = DOT_DISTANCE + CGRectGetMaxX(dotRect);
if (_phase==1)
{
CGContextSetFillColorWithColor(ctx, [self _darkDotColor].CGColor);
}
else
{
CGContextSetFillColorWithColor(ctx, [self _lightDotColor].CGColor);
}
CGContextFillEllipseInRect(ctx, dotRect);
dotRect.origin.x = DOT_DISTANCE + CGRectGetMaxX(dotRect);
if (_phase==2)
{
CGContextSetFillColorWithColor(ctx, [self _darkDotColor].CGColor);
}
else
{
CGContextSetFillColorWithColor(ctx, [self _lightDotColor].CGColor);
}
CGContextFillEllipseInRect(ctx, dotRect);
}
- (void)_phaseTimerTick:(id)sender
{
_phase = (_phase+1)%3;
[self setNeedsDisplay];
}
@end