chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
//
|
||||
// TLScannerView.m
|
||||
// TLChat
|
||||
//
|
||||
// Created by 李伯坤 on 16/3/4.
|
||||
// Copyright © 2016年 李伯坤. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TLScannerView.h"
|
||||
|
||||
@interface TLScannerView ()
|
||||
{
|
||||
NSTimer *timer;
|
||||
}
|
||||
|
||||
@property (nonatomic, strong) UIView *bgView;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *topLeftView;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *topRightView;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *btmLeftView;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *btmRightView;
|
||||
|
||||
@property (nonatomic, strong) UIImageView *scannerLine;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TLScannerView
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self setClipsToBounds:YES];
|
||||
[self addSubview:self.bgView];
|
||||
[self addSubview:self.topLeftView];
|
||||
[self addSubview:self.topRightView];
|
||||
[self addSubview:self.btmLeftView];
|
||||
[self addSubview:self.btmRightView];
|
||||
[self addSubview:self.scannerLine];
|
||||
[self p_addMasonry];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Public Methods -
|
||||
- (void)startScanner
|
||||
{
|
||||
[self stopScanner];
|
||||
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 / 60 block:^(NSTimer *timer) {
|
||||
if (self.hiddenScannerIndicator) {
|
||||
return;
|
||||
}
|
||||
self.scannerLine.centerX = self.bgView.centerX;
|
||||
self.scannerLine.width = self.bgView.width * 1.4;
|
||||
self.scannerLine.height = 10;
|
||||
if (self.scannerLine.y + self.scannerLine.height >= self.height) {
|
||||
self.scannerLine.y = 0;
|
||||
}
|
||||
else {
|
||||
self.scannerLine.y ++;
|
||||
}
|
||||
} repeats:YES];
|
||||
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
|
||||
}
|
||||
|
||||
- (void)stopScanner
|
||||
{
|
||||
if (timer) {
|
||||
[timer invalidate];
|
||||
timer = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setHiddenScannerIndicator:(BOOL)hiddenScannerIndicator
|
||||
{
|
||||
if (hiddenScannerIndicator == _hiddenScannerIndicator) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (hiddenScannerIndicator) {
|
||||
self.scannerLine.y = 0;
|
||||
[self.scannerLine setHidden:YES];
|
||||
_hiddenScannerIndicator = hiddenScannerIndicator;
|
||||
}
|
||||
else {
|
||||
_hiddenScannerIndicator = hiddenScannerIndicator;
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
self.scannerLine.y = 0;
|
||||
[self.scannerLine setHidden:hiddenScannerIndicator];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Methods -
|
||||
- (void)p_addMasonry
|
||||
{
|
||||
[_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self);
|
||||
}];
|
||||
[_topLeftView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.and.top.mas_equalTo(self);
|
||||
make.width.and.height.mas_lessThanOrEqualTo(self);
|
||||
}];
|
||||
[_topRightView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.and.top.mas_equalTo(self);
|
||||
make.width.and.height.mas_lessThanOrEqualTo(self);
|
||||
}];
|
||||
[_btmLeftView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.and.bottom.mas_equalTo(self);
|
||||
make.width.and.height.mas_lessThanOrEqualTo(self);
|
||||
}];
|
||||
[_btmRightView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.and.bottom.mas_equalTo(self);
|
||||
make.width.and.height.mas_lessThanOrEqualTo(self);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getter -
|
||||
- (UIView *)bgView
|
||||
{
|
||||
if (_bgView == nil) {
|
||||
_bgView = [[UIView alloc] init];
|
||||
[_bgView setBackgroundColor:[UIColor clearColor]];
|
||||
[_bgView.layer setMasksToBounds:YES];
|
||||
[_bgView.layer setBorderWidth:BORDER_WIDTH_1PX];
|
||||
[_bgView.layer setBorderColor:[UIColor whiteColor].CGColor];
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
|
||||
- (UIImageView *)topLeftView
|
||||
{
|
||||
if (_topLeftView == nil) {
|
||||
_topLeftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scanner_top_left"]];
|
||||
}
|
||||
return _topLeftView;
|
||||
}
|
||||
|
||||
- (UIImageView *)topRightView
|
||||
{
|
||||
if (_topRightView == nil) {
|
||||
_topRightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scanner_top_right"]];
|
||||
}
|
||||
return _topRightView;
|
||||
}
|
||||
|
||||
- (UIImageView *)btmLeftView
|
||||
{
|
||||
if (_btmLeftView == nil) {
|
||||
_btmLeftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scanner_bottom_left"]];
|
||||
}
|
||||
return _btmLeftView;
|
||||
}
|
||||
|
||||
- (UIImageView *)btmRightView
|
||||
{
|
||||
if (_btmRightView == nil) {
|
||||
_btmRightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scanner_bottom_right"]];
|
||||
}
|
||||
return _btmRightView;
|
||||
}
|
||||
|
||||
- (UIImageView *)scannerLine
|
||||
{
|
||||
if (_scannerLine == nil) {
|
||||
_scannerLine = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scanner_line"]];
|
||||
[_scannerLine setFrame:CGRectZero];
|
||||
}
|
||||
return _scannerLine;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user