自动布局(autolayout)环境下图片编辑器的实现

hi,all:

在经过了一番犹豫之后,我决定将我自己做的这个小APP的源码公布给大家:

其出发点是和大家一起学习iOS开发,仅供学习参考之用。之前代码是托管与gitlab

上的,今天我将其pull到github上来了,大家可以自行下载:git clone [email protected]:lihux/twentyThousandTomatoes.git没有安装git或者不会用的童鞋,

请猛戳github地址:https://github.com/lihux/twentyThousandTomatoes,进去之后选

择download zip下载即可。

         在大部分APP(尤其是社交类的,如qq)经常会有更换头像的场景:点击用户

加载头像,加载出系统图片,用户点击选中某张图片之后,可以对图片进行放缩和

拖动,已更改圆形裁剪框圈定的图片部分。如下图即为qq的头像选取编辑界面:


图1.qq照片编辑界面

        界面中可以对图片进行放大、缩小,拖动,白色圆环区域表示点击确定时将要

裁剪的范围。留意上图的动画,qq总是能够确保圆环完全被图片所覆盖,如果拖动

或者放缩使得图片以外的黑色区域进入了圆环,图片会自动弹回刚好能够完全覆盖

的状态,鉴于CSDN上传图片2M的限制,上面的gif图很短,感兴趣的同学可以打开

QQ自己体验一把(在修改个人头像功能中)。

        现在我们也要实现一个类似功能的界面,并且是在autolayout环境下,同时支

持横竖屏,这比QQ的图片选取页面又复杂了一些:QQ只支持竖屏的情况,不需要

考虑横屏时的情况和横竖屏切换的问题。下面详细讨论。

一、预期效果

        用户从相册或者相机中选取/拍摄一张照片,加载到图片编辑界面,用户可以拖

动、放缩照片,使圆形选取框中截图到合适的图像作为用户头像。效果图如下图所

示:

        用户在拖动、放缩时要保证圆环区域全部被图片所覆盖,这样才能确保裁剪出

来的照片刚好能够撑满整个圆形区域。同时,因为我们支持横屏布局,因此还要确保

竖屏切换横屏(或者反之)之后,圆环仍在正确的区域。

    

图2.竖屏效果 



  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
本设计将要实现的是一个单机图片浏览软件,从其目标功能及特点分析,将本软件功能划分如下: 可以打开BMP、PCX、TGA、JPEG及GIF图像。 不论打开的是上述图像中的哪一种,用户均能以其中的任意一种格式将其保存。 在查看一幅图像时,可以逐渐放大、缩小;可以直接调整图像显示大小到适合屏幕或恢复为原始状态;可以直接将显示大小调整为原图像的50%、75%、150%、200%。 在查看一幅图像时,可以对其进行顺时针90º、逆时针90º、180º旋转。 在查看一幅图像时,可以直接调用Windows画图程序打开并进行编辑或以系统默认关联的程序打开查看或编辑。 软件提供“上一张”、“下一张”的功能,即在打开一幅图像后,可以不再使用“打开”命令而用鼠标单击“上一张”按钮、“下一张”按钮或按键盘上的Page Up键、Page Down键直接浏览当前图片所在文件夹中的其他图片。 可以进行全屏幕浏览,并在全屏幕浏览时提供“幻灯片播放”的功能,自动显示当前文件夹下的所有图像。同时,在全屏幕浏览时,在屏幕右上角显示一个浮动工具条,提供“停止幻灯片播放”、“上一张”、“下一张”、“逐渐放大”、“逐渐缩小”、“适合屏幕大小”、“原始大小”及“退出全屏浏览”的功能。 按F11键可以进行全屏浏览、非全屏浏览的切换,同时,在进行全屏幕浏览时按ESC键也可以退出全屏状态。 在载入图片时,提供“从上往下”、“从下往上”、“从左往右”、“从右往左”、“左上进入”、“左下进入”、“右上进入”、“右下进入”、“马赛克”、“百叶窗”等显示效果,并且可以由用户选择是否使用及使用哪个效果,用户也可以选择让系统随机选择效果。 在查看图片时,用户也可以让软件随时显示“水平百叶窗”、“垂直百叶窗”、“马赛克”、“向上扫描”、“向下扫描”等效果。 在查看图片时,可以选择从当前目录中删除该图片,并将其放入系统回收站中。 在窗口的用户区右键单击鼠标,则弹出快捷菜单,显示常用的操作命令。 在查看图片时,标题栏显示当前打开的图片的文件名;状态栏从左到右依次显示图片的全路径、当前的显示比例、图片文件的大小(KB)、图像的大小、鼠标当前的坐标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值