Tag Archives: 算法技巧

自定义UIActionSheet实现分享功能,一行代码搞定!

1、先上图,有图好说话

Simulator-Screen-Shot-2016年3月13日-下午5.35.17

2、设置思路

2.1、我希望这是一个View,并非控制器,节省开支;
2.2、 这个View包含一个背景,一个面板,若干个按钮或标签;
2.3、我希望实现的功能是视图展示+事件响应;
2.4、希望无偶合性,并且一行代码搞定(能一行代码搞定的必定包含block);
2.5、这若干个按钮最好是外面传进来,要不我怎么知道需要什么样的按钮?传一组图片?那文字呢?再传一组文字?如何对应?
2.6、我希望开始调用的时候只要传按钮给你,结束后告诉我用户点了哪个按钮,其他的我都不想管(高度无偶封装),呵呵!
2.7、调用时还最好是类方法,我不喜欢alloc;[……]

继续阅读

iOS导航栏上实现webView的网页返回及关闭按钮

QQ20160307-0@2xSimulator-Screen-Shot-2016年3月7日-下午2.56.23
1、功能描述:
1.1、webView中加载多层网页时需要实现浏览器的“返回”功能;
2.2、同时需要实现iOS自身的返回导航控制器的上一个页面;
2、应用场景
2.1、webView
3、实现原理:
3.1、通过webview的canGoback来判断是否能够返回,从而决定“关闭”按钮的隐藏与显示;
3.2、在webview的代理方法webViewDidStartLoad、webViewDidFinishLoad两个方法中判断;
3.3、修改导航栏的leftBarbuttonItems来增加或删除“关闭”按钮;
3.4、通过canGoback来修改返回按钮的事件;[……]

继续阅读

OC在block内部定义block并递归

1、如何定义block:
格式为:[返回值] (^block名称)(形参类型1,形参类型2) = ^(形参1,形参2){ // code}
例如:NSString *(^myBlock)(int, NSString*) = ^(int i, NSString *text){ return @”sian”}

2、应用场景
2.1、使用FMDB框架查询数据,如果需要模糊查询时如果查询结果为空,需要修改查询值再次查询;
2.2、例如现在有一张城市名称、城市编码的数据库表,数据库中的城市名称如:北京、长沙等;
2.3、用户在查询时有可能输入的是“北京市”,还有一些自治区县名称都特别长,而在数据库中有可能是简写的;
2.4、SQL语句中使用like进行模糊查询只能是查询关键字是结果的一部分才可行,如果查询关键字大于结果值是无法查询到的;
2.5、如果数据库中是北京市,使用“北京”去like查询是可以查询到北京市的,反过来则不行;
2.6、基本想法是如果like查询为空,将关键字长度减1去掉最后一个字再次查询,直到返回查询结果或关键字被减至0再返回;
2.6、如数据库中存在北京,使用“北京市”去like查询,结果为空则将北京市修改为“北京”再查询,如果返回为空再修改为“北”查询…[……]

继续阅读

简单递归实现遍历子视图

1、方法实现

1
2
3
4
5
6
/// 遍历子视图
- (void)subviewWithBlock:(void(^)(UIView *view))aBlock
{
????// 如果有子视图则进入循环
????for (UIView *view in self.subviews) {
????????// 如果子视[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2016/01/28/112951173.html">继续阅读</a></p>

轻松实现UIScrollView循环滚动

1、先上图

未命名-1

2、应用场景

2.1、多个视图需要循环播放,一般情况下有多少个视图创建个多少个View排列在ScrollView即可,但如果视图过多会直接影响到手机性能及切换效果。

2.2、视图个数不确定的场景,绝大多数情况下我们都采用的是MVC的标准设计模式,即视图由数据决定,但数据的变化没法事先确定,因此视图必须具备一定灵活性。

3、设计思想

3.1、创建基础ScrollView并添加三个子控件到ScrollView,为什么是三个呢?这个问题问得好,我们一般情况下展示第二个,往左切换到第一个,往右切换到第三个,切换完成后,通过一系列算法立即将当前视图切换到中间一个的位置,调整子视图相对位置,实现重复效果!

3.2、看如下示意图:[……]

继续阅读