結合自身的實踐開發經驗總結出了22個iOS開發的小技巧,以非常歡樂的語調輕松解決開發過程中所遇到的各種苦逼難題,光讀著便已忍俊不禁。
1. TableView不顯示沒內容的Cell怎么辦?
類似于圖1,我不想讓下面的那些空顯示。很簡單,添加“self.tableView.tableFooterView = [[UIView alloc] init];”試過都說好,加完這句之后就變成了圖2的樣子。
2. 自定義了leftBarbuttonItem左滑返回手勢失效了怎么辦?
- self.navigationItem.leftBarButtonItem?=?[[UIBarButtonItem?alloc]?
- initWithImage:img?
- style:UIBarButtonItemStylePlain?
- target:self?
- action:@selector(onBack:)];?
- self.navigationController.interactivePopGestureRecognizer.delegate?=?(id<UIGestureRecognizerDelegate>)self;?
3. ScrollView莫名其妙不能在viewController劃到頂怎么辦?
- self.automaticallyAdjustsScrollViewInsets?=?NO;?
4. 鍵盤事件寫得好煩躁,都想摔鍵盤了怎么辦?
買個結實的鍵盤;
使用IQKeyboardManager(GitHub上可搜索),用完之后腰也不疼了,腿也不酸了。
5. 為什么我的App老是不流暢,到底哪里出了問題?
如圖:
這個神器叫做:KMCGeigerCounter ,快去GitHub上搬運吧。
6. 怎么在不新建一個Cell的情況下調整separaLine的位置?
- _myTableView.separatorInset?=?UIEdgeInsetsMake(0,?100,?0,?0);?
7. 怎么點擊self.view就讓鍵盤收起,需要添加一個tapGestures么?
- -?(void)touchesBegan:(NSSet?*)touches?withEvent:(UIEvent?*)event?
- {?
- [self.view?endEditing:YES];?
- }?
8. 怎么給每個ViewController設定默認的背景圖片?
使用基類啊,少年。
9. 想在代碼里改在xib里添加的layoutAttributes,但該怎么用代碼找?
像拉Button一樣地拉你的約束,nslayoutattribute也是可以拉線的。
10. 怎么像Safari一樣滑動的時候隱藏navigationbar?
- navigationController.hidesBarsOnSwipe?=?Yes?
11. 導航條返回鍵帶的title太討厭了,怎么讓它消失?
- [[UIBarButtonItem?appearance]?setBackButtonTitlePositionAdjustment:UIOffsetMake(0,?-60)?
- forBarMetrics:UIBarMetricsDefault];?
12. CoreData用起來好煩,語法又臭又長怎么辦?
MagicRecord
13. CollectionView怎么實現tableview那種懸停的header?
CSStickyHeaderFlowLayout
14. 能不能只用一個pan手勢來代替UISwipegesture的各個方向?
- -?(void)pan:(UIPanGestureRecognizer?*)sender?
- {?
- typedef?NS_ENUM(NSUInteger,?UIPanGestureRecognizerDirection)?{?
- UIPanGestureRecognizerDirectionUndefined,?
- UIPanGestureRecognizerDirectionUp,?
- UIPanGestureRecognizerDirectionDown,?
- UIPanGestureRecognizerDirectionLeft,?
- UIPanGestureRecognizerDirectionRight?
- };?
- static?UIPanGestureRecognizerDirection?direction?=?UIPanGestureRecognizerDirectionUndefined;?
- switch?(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:?{?
- switch?(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. 拉伸圖片的時候怎么才能讓圖片不變形?
方法一:
- UIImage?*image?=?[[UIImage?imageNamed:@"xxx"]?stretchableImageWithLeftCapWidth:10?topCapHeight:10];?
注:有開發者提醒這個已經棄用,現在的方法叫resizableImageWithCapInsets。
方法二,如圖:
16. 怎么播放GIF的時候這么卡,有沒有好點的庫?
FlipBoard出品的FLAnimatedImage太適合你了。
17. 怎么一句話添加上拉刷新?
使用SVPullToRefresh庫:
- [tableView?addPullToRefreshWithActionHandler:^{?
- //?prepend?data?to?dataSource,?insert?cells?at?top?of?table?view?
- //?call?[tableView.pullToRefreshView?stopAnimating]?when?done?
- }?position:SVPullToRefreshPositionBottom];?
18. 怎么把tableview里Cell的小對勾顏色改成別的顏色?
- _mTableView.tintColor?=?[UIColor?redColor];?
19. 本來我的statusbar是lightcontent的,結果用UIImagePickerController會導致我的statusbar的樣式變成黑色,怎么辦?
- -?(void)navigationController:(UINavigationController?*)navigationController?willShowViewController:(UIViewController?*)viewController?animated:(BOOL)animated?
- {?
- [[UIApplication?sharedApplication]?setStatusBarStyle:UIStatusBarStyleLightContent];?
- }?
20. 怎么把我的navigationbar弄成透明的而不是帶模糊的效果?
- [self.navigationBar?setBackgroundImage:[UIImage?new]?
- forBarMetrics:UIBarMetricsDefault];?
- self.navigationBar.shadowImage?=?[UIImage?new];?
- self.navigationBar.translucent?=?YES;?
21. 怎么改變uitextfield placeholder的顏色和位置?
繼承uitextfield,重寫這個方法:
- -?(void)?drawPlaceholderInRect:(CGRect)rect?{?
- [[UIColor?blueColor]?setFill];?
- [self.placeholder?drawInRect:rect?withFont:self.font?lineBreakMode:UILineBreakModeTailTruncation?alignment:self.textAlignment];?
- }?
22. 你為什么知道這么多奇怪的花招?
去Stack Overflow刷問題啊,少年!