全国咨询/投诉热线:400-618-4000

IOS培训实战教程之开发的22个奇葩技巧

更新时间:2016年01月27日11时11分 来源:传智播客IOS培训学院 浏览次数:

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

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

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

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

  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<UIG
复制代码


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. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
  2. {  
  3.    [self.view endEditing:YES];  
  4. }  
复制代码


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

使用基类啊,少年。

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

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

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

  1. navigationController.hidesBarsOnSwipe = Yes
复制代码

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

  1. [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)  
  2.                                                      forBarMetrics:UIBarMetricsDefault];
复制代码

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

MagicRecord

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

CSStickyHeaderFlowLayout

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

  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. 拉伸图片的时候怎么才能让图片不变形?

方法一:

  1. UIImage *image = [[UIImage imageNamed:@"xxx"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];  
复制代码


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

方法二,如图:

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

FlipBoard出品的FLAnimatedImage太适合你了。

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

使用SVPullToRefresh库:

  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的小对勾颜色改成别的颜色?

  1. _mTableView.tintColor = [UIColor redColor];  
复制代码




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

  1. - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated  
  2. {  
  3.     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
  4. }  
复制代码

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

  1. [self.navigationBar setBackgroundImage:[UIImage new]  
  2.                          forBarMetrics:UIBarMetricsDefault];  
  3. self.navigationBar.shadowImage = [UIImage new];  
  4. self.navigationBar.translucent = YES;  
复制代码




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

继承uitextfield,重写这个方法:

  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刷问题啊,少年!IOS培训学院认为你永远是最棒的



本文版权归传智播客IOS培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客IOS培训学院
首发:http://www.itcast.cn/ios/

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额