導讀:TableView不顯示沒內容的Cell怎麼辦?鍵盤事件寫得好煩躁,都想摔鍵盤了怎麼辦?App老不流暢哪出問題了?CoreData語法又臭又長怎麼辦?拉伸圖片怎麼才能不變形?讓我們一起歡樂地學習一下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<UIG
複製代碼
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刷問題啊,少年!