mirror of
https://github.com/wu736139669/ManagerDemo.git
synced 2026-08-05 05:55:42 +00:00
119 lines
2.8 KiB
Objective-C
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
|