iOS开发的22个奇谲巧技

http://www.cnblogs.com/xiaochao12345/p/4312407.html

本文作者@叶孤城___,他结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁。

  1. TableView不显示没内容的Cell怎么办?

  类似于图1,我不想让下面的那些空显示。很简单,添加“self.tableView.tableFooterView = [[UIView alloc] init];”试过都说好,加完这句之后就变成了图2的样子。

  2. 自定义了leftBarbuttonItem左滑返回手势失效了怎么办?


1

2

3

4

5

6

self.navigationItem.leftBarButtonItem
= [[UIBarButtonItem alloc]

              initWithImage:img

              style:UIBarButtonItemStylePlain

              target:self

              action:@selector(onBack:)];

self.navigationController.interactivePopGestureRecognizer.delegate
= (id<UIGestureRecognizerDelegate>)self;

  3. ScrollView莫名其妙不能在viewController划到顶怎么办?


1

self.automaticallyAdjustsScrollViewInsets
= NO;

  4. 键盘事件写得好烦躁,都想摔键盘了怎么办?

  • 买个结实的键盘
  • 使用IQKeyboardManager(GitHub上可搜索),用完之后腰也不疼了,腿也不酸了。

  5. 为什么我的App老是不流畅,到底哪里出了问题?

  如图:

  这个神器叫做:KMCGeigerCounter ,快去GitHub上搬运吧。

  6. 怎么在不新建一个Cell的情况下调整separaLine的位置?


1

_myTableView.separatorInset
= UIEdgeInsetsMake(0, 100, 0, 0);

  7. 怎么点击self.view就让键盘收起,需要添加一个tapGestures么?


1

2

3

4

-
(
void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event

{

   [self.view
endEditing:YES];

}

  8. 怎么给每个ViewController设定默认的背景图片?

  使用基类啊,少年。

  9. 想在代码里改在xib里添加的layoutAttributes,但该怎么用代码找?

  像拉Button一样地拉你的约束,nslayoutattribute也是可以拉线的。

  10. 怎么像Safari一样滑动的时候隐藏navigationbar?


1

navigationController.hidesBarsOnSwipe
= Yes

  11. 导航条返回键带的title太讨厌了,怎么让它消失?


1

2

[[UIBarButtonItem
<span id=
"3_nwp" style="width:
auto; height: auto; float: none;"
><a
id=
"3_nwl" href="http://cpro.baidu.com/cpro/ui/uijs.php?c=news&cf=1001&ch=0&di=128&fv=11&jk=daa32d9bb1e0b2b5&k=app&k0=app&kdi0=0&luki=3&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=b5b2e0b19b2da3da&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5765%2Ehtml&urlid=0" target="_blank" mpid="3" style="text-decoration:
none;"
><span
style=
"color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">app</span></a></span>earance]
setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)

                                                     forBarMetrics:UIBarMetricsDefault];

  12. CoreData用起来好烦,语法又臭又长怎么办?

  MagicRecord

  13. CollectionView怎么实现tableview那种悬停的header?

  CSStickyHeaderFlowLayout

  14. 能不能只用一个pan手势来代替UISwipegesture的各个方向?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

-
(
void)pan:(UIPanGestureRecognizer
*)sender

{

typedef NS_ENUM(NSUInteger,
UIPanGestureRecognizerDirection) {

    UIPanGestureRecognizerDirectionUndefined,

    UIPanGestureRecognizerDirectionUp,

    UIPanGestureRecognizerDirectionDown,

    UIPanGestureRecognizerDirectionLeft,

    UIPanGestureRecognizerDirectionRight

};

static UIPanGestureRecognizerDirection
direction = UIPanGestureRecognizerDirectionUndefined;

<span
id=
"1_nwp" style="width:
auto; height: auto; float: none;"
><a
id=
"1_nwl" href="http://cpro.baidu.com/cpro/ui/uijs.php?c=news&cf=1001&ch=0&di=128&fv=11&jk=daa32d9bb1e0b2b5&k=switch&k0=switch&kdi0=0&luki=4&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=b5b2e0b19b2da3da&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5765%2Ehtml&urlid=0" target="_blank" mpid="1" style="text-decoration:
none;"
><span
style=
"color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">switch</span></a></span>
(sender.state) {

    case UIGestureRecognizerStateBegan:
{

        if (direction
== UIPanGestureRecognizerDirectionUndefined) {

            CGPoint
velocity = [sender velocityInView:recognizer.view];

            BOOL isVerticalGesture
=
fabs(velocity.y)
>
fabs(velocity.x);

            if (isVerticalGesture)
{

                if (velocity.y
> 0) {

                    direction
= UIPanGestureRecognizerDirectionDown;

                }else {

                    direction
= UIPanGestureRecognizerDirectionUp;

                }

            }

            else {

                if (velocity.x
> 0) {

                    direction
= UIPanGestureRecognizerDirectionRight;

                }else {

                    direction
= UIPanGestureRecognizerDirectionLeft;

                }

            }

        }

        break;

    }

    case UIGestureRecognizerStateChanged:
{

        <span
id=
"2_nwp" style="width:
auto; height: auto; float: none;"
><a
id=
"2_nwl" href="http://cpro.baidu.com/cpro/ui/uijs.php?c=news&cf=1001&ch=0&di=128&fv=11&jk=daa32d9bb1e0b2b5&k=switch&k0=switch&kdi0=0&luki=4&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=b5b2e0b19b2da3da&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F5765%2Ehtml&urlid=0" target="_blank" mpid="2" style="text-decoration:
none;"
><span
style=
"color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">switch</span></a></span>
(direction) {

            case UIPanGestureRecognizerDirectionUp:
{

                [self
handleUpwardsGesture:sender];

                break;

            }

            case UIPanGestureRecognizerDirectionDown:
{

                [self
handleDownwardsGesture:sender];

                break;

            }

            case UIPanGestureRecognizerDirectionLeft:
{

                [self
handleLeftGesture:sender];

                break;

            }

            case UIPanGestureRecognizerDirectionRight:
{

                [self
handleRightGesture:sender];

                break;

            }

            default:
{

                break;

            }

        }

        break;

    }

    case UIGestureRecognizerStateEnded:
{

        direction
= UIPanGestureRecognizerDirectionUndefined;  

        break;

    }

    default:

        break;

}

}

  15. 拉伸图片的时候怎么才能让图片不变形?

  方法一:


1

UIImage
*image = [[UIImage imageNamed:@
"xxx"]
stretchableImageWithLeftCapWidth:10 topCapHeight:10];

  注:有开发者提醒这个已经弃用,现在的方法叫resizableImageWithCapInsets。

  方法二,如图:

  16. 怎么播放GIF的时候这么卡,有没有好点的库?

  FlipBoard出品的FLAnimatedImage太适合你了。

  17. 怎么一句话添加上拉刷新?

  使用SVPullToRefresh库:

 


1

2

3

4

[tableView
addPullToRefreshWithActionHandler:^{

//
prepend data to dataSource, insert cells at top of table view

//
call [tableView.pullToRefreshView stopAnimating] when done

}
position:SVPullToRefreshPositionBottom];

  18. 怎么把tableview里Cell的小对勾颜色改成别的颜色?


1

_mTableView.tintColor
= [UIColor redColor];

  19. 本来我的statusbar是lightcontent的,结果用UIImagePickerController会导致我的statusbar的样式变成黑色,怎么办?


1

2

3

4

-
(
void)navigationController:(UINavigationController
*)navigationController willShowViewController:(UIViewController *)viewController animated:(
BOOL)animated

{

    [[UIApplication
sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

}

  20. 怎么把我的navigationbar弄成透明的而不是带模糊的效果?


1

2

3

4

[self.navigationBar
setBackgroundImage:[UIImage
new]

                         forBarMetrics:UIBarMetricsDefault];

self.navigationBar.shadowImage
= [UIImage
new];

self.navigationBar.translucent
= YES;

  21. 怎么改变uitextfield placeholder的颜色和位置?

  继承uitextfield,重写这个方法:


1

2

3

4

-
(
void)
drawPlaceholderInRect:(CGRect)rect {

    [[UIColor
blueColor] setFill];

    [self.placeholder
drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];

}

  22. 你为什么知道这么多奇怪的花招?

  去Stack Overflow刷问题啊,少年!

时间: 2024-09-13 20:48:19

iOS开发的22个奇谲巧技的相关文章

iPhone与iPad开发实战——精通iOS开发--视频

iPhone与iPad开发实战--精通iOS开发 地址:http://v.51work6.com/courseInfoRedirect.do?action=courseInfo&courseId=240566 课程要求:熟悉C,C++,objective C项目平台:演示:mac os版本:xcode3.25,ios4.2工具:xcode涉及知识:语言:objective C操作系统:iOS手机操作系统技术亮点:iOS中UI设计模式,iOS中详细ui控件介绍,并通过小案例进行分析讲解,并深入介绍

IOS开发网站汇总

十分钟让你明白Objective-C的语法(和Java.C++的对比) http://blog.csdn.net/totogo2010/article/details/7632384 iOS学习之sqlite的创建数据库,表,插入查看数据 http://blog.csdn.net/totogo2010/article/details/7702207 iOS SQLite3初试用 http://mobile.51cto.com/iphone-321932.htm ios简单使用sqlite3 ht

iOS开发多线程篇—多线程简单介绍

一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过"活动监视器"可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐.使用迅雷下载电影,都需要在线程中执行 3.线程的串行 1个线程中任务的执

iOS开发中的单元测试(三)URLManager中的测试用例解析

URLManager是一个基于UINavigationController和UIViewController,以URL Scheme为设计基础的导航控件,目的是实现ViewController的松耦合,不依赖. 准备框架,定义基类 首先按照之前的两篇文章介绍的方法导入单元测试框架和匹配引擎框架,建立好测试Target,并配置编译选项. 定义测试用例基类:UMTestCase(代码1),其他用例全部继承自UMTestCase. #import <GHUnitIOS/GHTestCase.h> @

ios开发中时间转换的方法集锦

  这篇文章主要介绍了ios开发中时间转换的方法集锦,需要的朋友可以参考下 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yy

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.       下载:https://github.com/mwaterfall/MWPhotoBrowser   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Gith

iOS开发封装一个可以响应超链接的label——基于RCLabel的交互扩展

iOS开发封装一个可以响应超链接的label--基于RCLabel的交互扩展 一.引言         iOS系统是一个十分注重用户体验的系统,在iOS系统中,用户交互的方案也十分多,然而要在label中的某部分字体中添加交互行为确实不容易的,如果使用其他类似Button的控件来模拟,文字的排版又将是一个解决十分困难的问题.这个问题的由来是项目中的一个界面中有一些广告位标签,而这些广告位的标签却是嵌在文本中的,当用户点击文字标签的位置时,会跳转到响应的广告页.         CoreText框

iOS开发系列--打造自己的“美图秀秀”

概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image Quartz 2D 在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框架的一部分,是一个强大的二维图像绘制引擎.Quartz 2D在UI

iOS开发网络篇—XML介绍

一.XML简单介绍 XML:全称是Extensible Markup Language,译作"可扩展标记语言" 跟JSON一样,也是常用的一种用于交互的数据格式,一般也叫XML文档(XML Document)   XML举例 <videos>     <video name="小黄人 第01部" length="30" />     <video name="小黄人 第02部" length=&q