开发者资讯

 首页 > 开发者资讯 > 编程开发 > iOS开发的22个奇谲巧技TableView不显示没内容的Cell怎么办?键盘事件写得好烦躁,都想摔键盘了怎么办?App老不流畅哪出问题了?CoreData语法又臭又长怎么办?拉伸图片怎么才能不变形?让我们一起欢乐地学习一下iOS开发的各种小技巧吧。

iOS开发的22个奇谲巧技TableView不显示没内容的Cell怎么办?键盘事件写得好烦躁,都想摔键盘了怎么办?App老不流畅哪出问题了?CoreData语法又臭又长怎么办?拉伸图片怎么才能不变形?让我们一起欢乐地学习一下iOS开...

分享到:
【字体:
导读:
          TableView不显示没内容的Cell怎么办?键盘事件写得好烦躁,都想摔键盘了怎么办?App老不流畅哪出问题了?CoreData语法又臭又长怎么办?拉伸图片怎么才能不变形?让我们一起欢乐地学习一下iOS开发的各种小技巧吧。


TableView不显示没内容的Cell怎么办?键盘事件写得好烦躁,都想摔键盘了怎么办?App老不流畅哪出问题了?CoreData语法又臭又长怎么办?拉伸图片怎么才能不变形?让我们一起欢乐地学习一下iOS开发的各种小技巧吧。

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

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

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

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]  
  2.               initWithImage:img  
  3.               style:UIBarButtonItemStylePlain  
  4.               target:self  
  5.               action:@selector(onBack:)];  
  6. self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. self.automaticallyAdjustsScrollViewInsets = NO;  

 

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

 

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

 

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

如图:

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

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. _myTableView.separatorInset = UIEdgeInsetsMake(0, 100, 0, 0);  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
  2. {  
  3.    [self.view endEditing:YES];  
  4. }  

 

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

使用基类啊,少年。

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

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

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. navigationController.hidesBarsOnSwipe = Yes  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)  
  2.                                                      forBarMetrics:UIBarMetricsDefault];  

 

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

MagicRecord

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

CSStickyHeaderFlowLayout
 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. - (void)pan:(UIPanGestureRecognizer *)sender  
  2. {  
  3. typedef NS_ENUM(NSUInteger, UIPanGestureRecognizerDirection) {  
  4.     UIPanGestureRecognizerDirectionUndefined,  
  5.     UIPanGestureRecognizerDirectionUp,  
  6.     UIPanGestureRecognizerDirectionDown,  
  7.     UIPanGestureRecognizerDirectionLeft,  
  8.     UIPanGestureRecognizerDirectionRight  
  9. };  
  10. static UIPanGestureRecognizerDirection direction = UIPanGestureRecognizerDirectionUndefined;  
  11. switch (sender.state) {  
  12.     case UIGestureRecognizerStateBegan: {  
  13.         if (direction == UIPanGestureRecognizerDirectionUndefined) {  
  14.             CGPoint velocity = [sender velocityInView:recognizer.view];  
  15.             BOOL isVerticalGesture = fabs(velocity.y) > fabs(velocity.x);  
  16.             if (isVerticalGesture) {  
  17.                 if (velocity.y > 0) {  
  18.                     direction = UIPanGestureRecognizerDirectionDown;  
  19.                 } else {  
  20.                     direction = UIPanGestureRecognizerDirectionUp;  
  21.                 }  
  22.             }  
  23.             else {  
  24.                 if (velocity.x > 0) {  
  25.                     direction = UIPanGestureRecognizerDirectionRight;  
  26.                 } else {  
  27.                     direction = UIPanGestureRecognizerDirectionLeft;  
  28.                 }  
  29.             }  
  30.         }  
  31.         break;  
  32.     }  
  33.     case UIGestureRecognizerStateChanged: {  
  34.         switch (direction) {  
  35.             case UIPanGestureRecognizerDirectionUp: {  
  36.                 [self handleUpwardsGesture:sender];  
  37.                 break;  
  38.             }  
  39.             case UIPanGestureRecognizerDirectionDown: {  
  40.                 [self handleDownwardsGesture:sender];  
  41.                 break;  
  42.             }  
  43.             case UIPanGestureRecognizerDirectionLeft: {  
  44.                 [self handleLeftGesture:sender];  
  45.                 break;  
  46.             }  
  47.             case UIPanGestureRecognizerDirectionRight: {  
  48.                 [self handleRightGesture:sender];  
  49.                 break;  
  50.             }  
  51.             default: {  
  52.                 break;  
  53.             }  
  54.         }  
  55.         break;  
  56.     }  
  57.     case UIGestureRecognizerStateEnded: {  
  58.         direction = UIPanGestureRecognizerDirectionUndefined;     
  59.         break;  
  60.     }  
  61.     default:  
  62.         break;  
  63. }  
  64. }  

 

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

方法一:

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. UIImage *image = [[UIImage imageNamed:@"xxx"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];  

 

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

方法二,如图:

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

FlipBoard出品的FLAnimatedImage太适合你了。

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

使用SVPullToRefresh库:

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. [tableView addPullToRefreshWithActionHandler:^{  
  2. // prepend data to dataSource, insert cells at top of table view  
  3. // call [tableView.pullToRefreshView stopAnimating] when done  
  4. } position:SVPullToRefreshPositionBottom];  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. _mTableView.tintColor = [UIColor redColor];  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated  
  2. {  
  3.     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
  4. }  

 

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

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. [self.navigationBar setBackgroundImage:[UIImage new]  
  2.                          forBarMetrics:UIBarMetricsDefault];  
  3. self.navigationBar.shadowImage = [UIImage new];  
  4. self.navigationBar.translucent = YES;  

 

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

继承uitextfield,重写这个方法:

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. - (void) drawPlaceholderInRect:(CGRect)rect {  
  2.     [[UIColor blueColor] setFill];  
  3.     [self.placeholder drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];  
  4. }  

 

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

去Stack Overflow刷问题啊,少年!

分享到:
12 款免费的文字转语音的转换工具
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。 本文向你推荐 12 个免费的 TTS 转换工具:   Marf SmartRead DSpeech Emacspeak Nvaccess Cmusphinx Balabolka IVONA Text To Speech Voice Panopreter Text To Speech Software eSpeak Natural ...
EhCache缓存系统在集成环境中的使用详解
Ehcache 缓存系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。 下图是 EhCache 在应用程序中的位置: 图 1. EhCache 应用架构图 EhCache 的主要特性有: 快速; 简单; 多种缓存策略; 缓存数据有两级:内存和磁盘,因此无需担心容量问题; 缓...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……