DSMagnifierView是一個(gè)有放大鏡子效果的自定義控件仲闽。
先看效果:
放大鏡效果.gif
其實(shí)很簡單脑溢,就是把UIWindow的圖層給渲染到DSMagnifierView上。
由于這個(gè)放大鏡要處于屏幕最上層赖欣,最好是UIWindow的子類屑彻,這樣可以設(shè)置它的視圖層級。
使用方法
1.初始化后設(shè)置用來渲染的視圖renderView顶吮。
- (DSMagnifierView *)magnifierView {
if (nil == _magnifierView) {
_magnifierView = [[DSMagnifierView alloc] init];
_magnifierView.renderView = self.view.window;
}
return _magnifierView;
}
2.在觸摸屏幕的時(shí)候設(shè)置magnifierView的frame和渲染點(diǎn)renderPoint社牲。
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
NSLog(@"touching");
// 獲取觸摸點(diǎn)
UITouch *touch = [touches anyObject];
CGPoint p = [touch locationInView:self.view];
//window的hidden默認(rèn)為YES
self.magnifierView.hidden = NO;
//設(shè)置magnifierView的frame
self.magnifierView.frame = CGRectMake(0, 0, 150, 150);
self.magnifierView.center = p;
//設(shè)置渲染的中心點(diǎn)
self.magnifierView.renderPoint = p;
}
3.用完后銷毀
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
//用完一定要記得置nil。
self.magnifierView = nil;
}