总结这2天开发中发现的一些问题:
UIView不能实现为单例
我们的app中有几个页面,有一个共享的组件,似乎很适合用单例模式来实现。但是改成单例以后,发现一个奇怪的现象,从一个ViewController切换回来,那个单例的View组件就不显示了。在stackoverflow上搜索了一番,结论是UIView不应该实现为单例的,apple的文档里也说,这是一种反模式。所以最后改为每个View有一个单独的组件实例,在外部用一个单例的类来保存状态
一般不应该从View获取ViewController的引用
根据apple文档的描述,UIView最好对UIViewController的状态一无所知,如果需要交互的话,一般通过delegate来实现。
所以官方的API,UIViewController可以通过self.view拿到自己的view,而UIView就没有公开类似self.viewController这样的属性
如果一定需要的话,可以使用这个私有的API:
UIViewController *vc = self->_viewDelegate;
当然,由于众所周知的原因,强烈不建议这样做。如果确实需要在view里得到ViewController的话,可以设置一个实例变量,在init方法里赋值
UINavigationItem似乎没有subclassing的价值
今天费了半天劲,自定义一个UINavigationItem的子类,最后发现UIViewController的navigationItem属性是readonly的。。所以貌似UINavigationItem应该直接使用,不应该子类化
分享到:
相关推荐
iOS中UIView的翻页动画demo 有几个是私有的api,小心使用。
将封装的UIActionSheet改为UIView,为了多态初始化时添加了枚举(几个时间选择器样式)。 UIActionSheet改为UIView核心代码为以下几个方法: - (void)showInView:(UIView *)view; // UIPicker显示 -(void)...
NULL 博文链接:https://zhangmingwei.iteye.com/blog/1948108
该类继承UIView,展示一个跑马灯效果的View,使用就像普通UIView一样简单,通过改变几个属性控制颜色、速度等。
为UIView添加的扩展,方便以后的frame使用,每次要点好几次太麻烦了。添加个扩展轻松帮你解决。
无论是UILabel、UIImageView,还是自定义视图,只要是UIView都可以用来刮。代码简单,功能强大,你值得拥有! 这是一个简单却功能强大的刮刮乐视图,几行代码就可以实现刮刮乐效果,而且性能良好。下面有美女福利哟...
UIView-BezierCurve 圆角化UIView的各个角
IOS中一般会用到几种方式自定义UIView 1、继承之UIView的存代码的自定义View 2、使用xib和代码一起使用的自定义View 3、存xib的自定义View(不需要业务处理的那种) 本文主要就介绍下存代码的自定义UIView和能够在...
该实现使用了几个带有圆角和背景颜色的子层; 虽然尚未对此实现进行概要分析,但从理论上讲,这使其在资源使用方面既快速又轻松。 通过 IB_DESIGNABLE 和 IBInspectable,它可以很好地与界面构建器配合使用。 可以...
该框架仅添加了几个有用的扩展。您可以仅在检查实现。用法与功能这是约束上面的屏幕时代码的样子。有关完整版本,请参见。只是UIKit import UIKitfinal class ViewController : UIViewController { private let ...
UIScientificNotationLabel UIScientificNotationLabel是UIView的子类,可让您在iOS和MacOS X上显示非常大/小的数字的科学计数法(最新版本在MaxOS X上不起作用,请再进行几次提交))。 该实现自动确定要显示给用户...
SCViewShaker关于一个高度可配置的UIView类别,用于摇动视图。 您开始用一根衬里摇晃您的观点:)。 它支持几种不同的摇动样式(水平,垂直,旋转),并让您配置持续时间,速度和摇动强度。用法SCViewShaker作为UIView...
RTSP客户端视图 一个 UIView 可以解码(h264)和播放 rtsp 视频流,ios的本地视频文件。
* @param index 当前显示的是第几个页面 */ - (void)banner:(LBBanner *)banner didChangeViewWithIndex:(NSInteger)index; 效果图 LBBanner我会持续更新...。有问题或者更好的建议、可以加QQ群: ...
这个效果写起来挺简单,主要运用下面几个知识点 layer 的mask : 图层蒙版 layer 的shadowPath : 绘制自定义形状阴影 UIBezierPath :绘制六边形路线 说完知识点下面上代码了 绘制六边形的路线 -(CGPathRef)...
用脚底板想的方法:在弹幕容器里面创建几个 UIButton,并且 addTarget,增加点击事件。最后利用 UIView 的 block API 实现动画。 结果:嗯…可惜的是,代码运行起来,你会发现在 UIButton 运动过程,点击事件并...
自定义的本地计算农历的uiview类,包括日历,...在xib里面新建几个100X100的uiview,把CalenderView拖入xcode,改uiview类为Calenderview就能显示农历了。 源代码来源于CSDN,本人只是向后扩展了,大家用起来比较方便。
实现了只用UIView或CATransition的简单动画,也实现了利用关键帧CAKeyframeAnimation的复杂动画,各举了几个例子。
1.首先我们要知道这个页面有几个View?这个页面其实有四个View,self.view , 图中白色VC的View rootVC.view ,白色VC上的maskView maskView , 以及弹出的popView popView 。我们创建它们: self.view....
该库创建了几个CAEmitterLayers并对它们进行动画处理,从而产生闪光效果。 也可以使用Twinkle的一个版本。Twinkle:sparkles:Twinkle是使iOS或tvOS应用程序中的任何UIView闪烁的一种快速简便的方法。 该库创建了几个...