接前文《谈Cocoa中的UIView》,本文继续谈UIView。
通常的理解,在一个MVC架构中,View是用来显示内容的,而有关用户交互的逻辑事件则放到Controller里。
——这是个误解。考虑UIButton的例子,当用户按下和放开一个Button时,Button都会有相应的3D动画效果,显示其被按下和放开。这个动作显然是UIButton自带的,而不需要在Controller里写动画代码。
所以,应该把“场景无关”的交互逻辑放在View里。一个按钮,无论是用来登录人人网,还是用来确认是否已满18周岁,它都需要有3D动画效果,所以这个是“场景无关”的。而点击按钮后的响应事件则是场景相关的,需要写在Controller里——如登录成功人人网,确认进入XX网等。
再来谈一个例子说明这个观点:
在一个移动移动应用中,通常需要有缓存在线图片的功能——碰到以前打开过的在线图片,可以从本地disk中找到。
通常希望应用中所有的图片视图都有这个功能,那么它是场景无关的,应该把这个写到View里。
于是我希望有这样一个UIImageView的子类——当给它图片的URL参数,就能方便地读取图片,而不必关心图片来自线上还是缓存,如:
图片是异步读取的。具体实现方式略过不表。
有时还是需要知道图片是否来自线上,则startReadingImage这个方法可以有个布尔返回值。
这其实是本人在上一家公司工作期间最为自得的设计,尽管不算太复杂,但很有用。
分享到:
相关推荐
UIView 动画 UIView动画
ios中关于uiview
UIView AutoLayout ,UIView AutoLayout 是 UIView 的分类,实现了自动布局限制的简单接口。 T...
UIView+Extension 对view的一个扩展
详细讲解UIView的生命循环周期,对开发者有更好的启发作用,深层次了解程序运行的流程。
1、将UIView 保存为图片,按照给定的scale 2、stackoverflow参照 3、保存的图片为依据scale,亲测
+ (UIView *_Nullable)az_gradientViewWithColors:(NSArray*> *_Nullable)colors locations:(NSArray*> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; - (void)az_...
UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ...
为UIView添加圆角扩展
已封装好的实现渐变的UIView,只需传入渐变开始值和结束值就可直接使用。有四种渐变方向可选
简单的把UIView转化为UIImage,大家可以看下。
iOS中UIView的翻页动画demo 有几个是私有的api,小心使用。
通过协议扩展高斯模糊任意 UIView.zip,对任何具有swift协议扩展的uiview应用高斯模糊
iPhone开发学习笔记005——使用XIB自定义一个UIView,然后将这个view添加到controller的view。
uiview+frame,方便UI布局,码农工具,第一次上传,测下好用不
好程序员学习笔记--UI基础UIWindow、UIView.doc
自定义UIView动画 http://blog.csdn.net/brycegao321/article/details/53817222
轻量级组件能够让所有 UIView 都支持进度条展示
UIView 震动动画效果 AFViewShaker ,AFViewShaker 是一个简单的工具用来执行 。 使用方法: AFViewShaker *...
xamarin学习笔记B03(ios的UIView的了解)它是所有视图控件的父类。例如UIButton、UILabel、UIImageView等都最终是继承自UIView。它可以添加其它视图作为它的子视图。