回答
我们在填字游戏中执行此操作。在你的drawRect方法中,遮住一个圆圈(使用包含放大镜的'蒙版'的单色位图),并用2倍缩放变换在你的主题视图中绘制。然后画一个放大镜图像,你就完成了。
- (void) drawRect: (CGRect) rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect bounds = self.bounds;
CGImageRef mask = [UIImage imageNamed: @"loupeMask"].CGImage;
UIImage *glass = [UIImage imageNamed: @"loupeImage"];
CGContextSaveGState(context);
CGContextClipToMask(context, bounds, mask);
CGContextFillRect(context, bounds);
CGContextScaleCTM(context, 2.0, 2.0);
//draw your subject view here
CGContextRestoreGState(context);
[glass drawInRect: bounds];
}
听起来很有趣。我只需要添加一个覆盖层来尝试模仿反射。 我要测试它。非常感谢! – 2010-01-09 13:21:23
工作正常。谢谢 – 2010-01-17 18:50:42
该代码不支持未缩放区域的阴影!如何解决这个问题? – Dmitry 2012-11-11 17:13:03
我在斯威夫特3使用此代码:
class MagnifyingGlassView: UIView {
var zoom: CGFloat = 2 {
didSet {
setNeedsDisplay()
}
}
weak var readView: UIView?
// MARK: - UIVIew
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
override func draw(_ rect: CGRect) {
guard let readView = readView else { return }
let magnifiedBounds = magnifyBounds(of: readView, zoom: zoom)
readView.drawHierarchy(in: magnifiedBounds, afterScreenUpdates: false)
}
// MARK: - Private
private func setupView() {
isOpaque = false
backgroundColor = UIColor.clear
}
private func magnifyBounds(of view: UIView, zoom: CGFloat) -> CGRect {
let transform = CGAffineTransform(scaleX: zoom, y: zoom)
var bounds = view.bounds.applying(transform)
bounds.center = view.bounds.center
return view.convert(bounds, to: self)
}
}
extension CGRect {
var center: CGPoint {
get {
return CGPoint(x: origin.x + width/2, y: origin.y + height/2)
}
set {
origin.x = newValue.x - width/2
origin.y = newValue.y - height/2
}
}
}
你需要调用setNeedsDisplay
在scrollViewDidScroll:
如果你读的视图是一个滚动视图。
- 1. android放大镜效果
- 2. 放大镜效果css
- 3. 防止放大镜出现
- 4. 使iPhone相机作为放大镜
- 5. 如何在Android中的EditText中提供放大镜效果?
- 6. Android放大镜
- 7. 如何在NSView中实现放大镜
- 8. UIScrollView放大摇动效果
- 9. 放大UIImageView上的放大镜
- 10. iPhone如何获得屏幕某些部分的放大效果?
- 11. jScript放大镜 - 悬停
- 12. jQuery Javascript图像放大镜
- 13. d3中的放大镜
- 14. c#中的放大镜.net
- 15. Flex“放大镜”/掩蔽
- 16. 重现颜色效果
- 17. 禁用iPhone应用程序中UITextView中的放大镜
- 18. Iphone在长按造成一些矩形放大镜弹出
- 19. 如何在iPhone上实现slurp效果?
- 20. 基于镜像效果,亮度和缩放读取JPEG文件
- 21. iPhone:UIScrollView中与放大/缩小效果
- 22. 如何停止swiffy放大效果
- 23. 放大效果不光滑jquery
- 24. jQuery UI拖放效果和框大小
- 25. 放大鼠标悬停效果
- 26. 从ListViewItem中删除放大效果
- 27. Cocos2D iPhone效果
- 28. 如何实现缩放效果?
- 29. 如何将放大镜jQuery图像放大镜添加到放大的fancybox弹出图像中?
- 30. 我如何知道放大镜何时出现在UIWebView中?
有趣的问题。尽管我自己没有想法。 – 2010-01-08 21:11:20