ios 图片形变放大会失真吗 iphone图片放大镜效果怎么弄
为什么要自己实现一个放大镜视图呢,因为上一篇中说的TextKit的问题,所以正好趁这个机会来自己做些iOS中本来就有的东西,比如文字选择效果、编辑菜单什么的,权当是练习了。
标题虽然说是自己实现,不过还是参照了别人的先进经验啦,见这里。这个实现的基本原理,是新建一个视图(MagnifierView)并显示,然后将要放大的视图的图层通过放大平移渲染在这个视图中。对我来说,其中最关键的代码是这个:
-(void)drawRect:(CGRect)rect{CGContextRefcontext=UIGraphicsGetCurrentContext();CGContextTranslateCTM(context,1*(self.frame.size.width*0.5),1*(self.frame.size.height*0.5));CGContextScaleCTM(context,1.5,1.5);CGContextTranslateCTM(context,-1*(touchPoint.x),-1*(touchPoint.y));[self.viewToMagnify.layerrenderInContext:context];}
但是秉着精益求精的态度,这个实现还有几个瑕疵:
1.当手指移动到屏幕下方时,会出现下图所示情况。因为放大镜视图(MagnifierView)中要显示的内容已经超出了屏幕范围。
2.状态栏会挡住放大镜视图,并且,当手指移动到屏幕最上面时,放大镜也出了屏幕范围因而看不到放大的内容(虽然即使不超出也可能被手指挡住……)
3.从代码可以看出,被放大的只是那个特定的视图(viewToMagnify)及该视图的子视图。所以不难想像,如果视图不是覆盖整个屏幕,则会出现问题,balabalabala……例子我就不举了~
好了,下面是我的解决方案。我用Xcode5和storyboard重写了项目,并且代码放到了GitHub:
1.对于第一点问题,我想到的方法是,在放大镜视图中加一个子视图(图层),在子视图(图层)中渲染要放大的内容,这样当手指移动到屏幕下面时就不会出现真空地带。添加子视图似乎有点麻烦,并且我及时发现了一个CALayer的委托方法:-drawLayer:inContext:(非正式协议方法),利用这个方法可以很方便的绘制子图层。于是这个问题愉快的解决了。不过值得注意的一点还有CALayer的contentsScale属性,如果是Retina屏,需要将该值设为2。
效果如下图:
2.放大镜视图超出屏幕上方这个很好解决,不多说。而对于状态栏的问题,解决方法是让放大镜视图继承自UIWindow而不是UIView,并且将windowLevel设为UIWindowLevelAlert。具体可以看我的代码。
3.第三点问题也简单,只需做3个小改动,即将:
self.magnifierView.viewToMagnify=self;改为:
self.magnifierView.viewToMagnify=self.window;以及另外两个地方的:
self.magnifierView.pointToMagnify=[[touchesanyObject]locationInView:self];改为:
self.magnifierView.pointToMagnify=[[touchesanyObject]locationInView:self.window];效果图:
以上,经过这一番修改差不多没什么问题了。不过iOS系统本身的放大镜可以连状态栏一起放大,我现在还不知道怎么实现。。。
iOS 双击放大 图片的时候怎么无损 ios图片放大镜怎么开关
功能1:将你的iPhone摄像头变成一个放大镜如果你想要使用放大镜,只需要从设置-通用-辅助功能-放大器进入之后将该功能开启,然后回到主屏幕页面连按三次Home键便可开启放大镜功能了。虽然相机界面也可以进行放大,但是在放大镜功能里可以放大的倍数要远远超过前者。
功能2:从锁屏界面便可打开摄像头精彩的镜头往往稍纵即逝,而等你解锁了屏幕再点开相机功能准备拍摄的时候,可能早已错过了最佳时机。现在拍照不需要先解锁手机然后再点开相机功能了,只需要在锁屏界面往右一划便可进入相机界面进行拍摄了。
功能3:利用Siri来帮你从相册检索照片相册里照片太多不好找照片?让Siri来帮你忙吧!现在你可以利用Siri根据特定的日期,时间或者是地点进行照片检索了,举个例子:你在9月5号去看了一场球赛然后想尽快查看那天拍摄的照片,只需要对Siri说“从9月5号开始的照片”就可以了。你也可以要求Siri帮你找出“上周”或者“上个月”的照片,另外Siri还可以根据特定的地点检索照片,这样当你想要搜索你去旅游时候的照片,你只要对Siri说“帮我找在某某地点拍摄的照片”,你将再也不用自己在相册里到处翻找了。
功能4:快速关联相关照片iOS10的照片app里还进行了另一大改动,当你点开相册里一张照片时,只需要把照片往上滑动,系统就会自动帮你搜索出相关联的照片和视频供你查看。
功能5:轻松找到你弄丢的AppleWatch如果你有AppleWatch并且运行的是watchOS3系统那么当你升级到iOS10之后你将可以通过“查找iPhone”功能定位你的AppleWatch。只要你的AppleWatch处在联网状态,那么你就可以进入查找界面并选择遗失模式进行定位,或者更简单的,直接从此界面中远程操作你的AppleWatch发出一串声音,这样你就不用到处在房间里寻找不知道丢在哪的AppleWatch了。
功能6:快速浏览未读邮件点击进入邮件界面之后,只要点击左下角的图标就会进入过滤模式,系统会只显示未读邮件,再点击一下图标便会回到默认模式。
功能7:限定锁屏上显示的内容iOS10升级后,iPhone用户无需解锁。即可快速浏览锁屏上的信息了,这个功能虽然便利也有人会担忧可能会被别人看到隐私信息。苹果对于这个问题也是有考虑到的,用户可以自行选择哪些类型的信息可以在锁屏上显示。只需要从设置-TouchID与密码进入之后往下拉然后勾选你想要显示在锁屏上的信息即可。
功能8:智能照片搜索在iOS10系统中照片搜索功能将刚加便利,现在你将可以在你的相册中的人物将自动分类(得益于面部识别功能),还可以根据照片中的环境和事物来进行搜索。如同下图中这样,如果你想搜索所有包含了美食的照片,只需要输入“美食”二字系统会自动帮你识别出你相册里包含该场景的照片。
功能9:触摸解锁功能如果你并不喜欢通过按下home键来解锁手机,那么你也可以从设置中选择通过用手指触摸TouchID传感器解锁。你可以从设置-通用-辅助功能-主屏幕按钮处点击“轻触打开”功能即可。
功能10:LivePhoto编辑功能在Livephotos功能中用户将可以编辑图片的尺寸以及添加滤镜效果。
功能11:在短信中发送手写文字如果你在短信界面切换成横屏模式,你就会发现键盘界面右下角出现了一个新的图标,点开它你就可以发送手写的文字或者涂鸦了。
功能12:使用3DTouch来快速创建一个备忘录现在使用3DTouch功能将可以快速创建一个备忘录了。
功能13:不限数量的Safari浏览器标签页如果你觉得Safari浏览器的标签页可打开的数量不够的话,现在iOS10就将满足你的这个愿望了,升级到iOS10的用户可以用Safari浏览器打开不限制数量的浏览页面,而之前的iOS9拥Safari最多只能打开36个浏览页。
功能14:快速从“健康”App里浏览“今天”的状态如果你想要快速浏览你今天的活动量,那么你可以通过3DTouch功能快速在健康App里查看你今天走的步数之类的信息。