前言:把自己平常寫項目遇到的一些問題的解決方案總結到這里,方便自己以后查看,也希望對看文章的你有一定的幫助
查看目錄
01 解決UICollectionView點擊手勢與didSelected方法沖突
02 id特性的運用
03 標簽控制器標簽欄設置背景
04 設置圖片的渲染模式
05 UITableViewCell的點擊效果設置
06 UITableView 滑動遇到的小問題
07 運行突然出現you don’t have permission to view it錯誤
08 設置UITableViewCell的分割線最簡單的方法
09 利用導航欄跳轉時隱藏底部的tabBar欄
10 直接設置導航欄中間標題的字體大小和顏色
11 如何設置自定義字體
12 AFNetWorking 請求數據報”Request failed: unacceptable content-type: text/plain” 錯誤解決方法
pragma mark -- 01 解決UICollectionView點擊手勢與didSelected方法沖突
- 做的小項目中遇到了給UICollectionView添加了點擊手勢而cell的代理方法didSelect不響應了,上網查了下解決方法
1.首先你得遵守 UIGestureRecognizerDelegate,設置代理 _tap.delegate = self;
2.實現代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if (touch.view != self.collectionView) {
return NO;
}
return YES;
}
這個代理方法會攔截你的點擊手勢,先進行判斷是否進行手勢事件
pragma mark — 02 id特性的運用
- 先說說問題情況,就是我自定義了三個textField,都有一個暴露給外界調用的一個方法 - (void)initiaText; 然后在textField的代理方法中我想調用這個方法而又不去寫具體的自定義類名
//三個自定義的UITextField
_flagField.delegate = self;
_birthdayField.delegate = self;
_cityField.delegate = self;
//代理方法:(笨寫法)
- (void)textFieldDidBeginEditing:(FlagField *)textField
{
[textField initialText];
}
//利用id特性:能調用任何對象的方法—我們就不用去修改代理的父類名稱了
- (void)textFieldDidBeginEditing:(id)textField
{
[textField initialText];
}
pragma mark -- 03 標簽控制器標簽欄設置背景
首先如果直接設置tabBar的背景色,系統會自動渲染成半透明的
self.tabBar.backgroundColor = [UIColor orangeColor];
有兩種解決方案
1.可以通過設置背景圖片的方式給標簽欄設置背景顏色,比如紅色的背景圖片,要求圖片大小要正好
//用以下方式獲得標簽欄寬高后,創建一個背景圖片,
NSLog(@"%i,%i",(int)tabController.tabBar.frame.size.height,(int)tabController.tabBar.frame.size.width); tabController.tabBar.backgroundImage=[UIImage imageNamed:@"tabBarbg.png"];
2.用UIAppearance設置(這樣設置就不會渲染了)
[[UITabBar appearance] setBarTintColor:[UIColor orangeColor]];
pragma mark -- 04 設置圖片的渲染模式
- 有次給導航欄的右邊按鈕設置了一張圖片,結果只顯示了一個藍色的圖片,查了一下,原來是系統渲染在作怪
直接給按鈕設置圖片是不行的,會被渲染為藍色
[rightItem setImage:[UImage imageName:@"save"]];
我們可以單獨設置一下圖片的渲染模式
UIImage *rightImage = [UIImage imageNamed:@"save.png"];
//設置圖像的渲染樣式
rightImage = [rightImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[rightItem setImage:rightImage];
//渲染模式
UIImageRenderingModeAutomatic // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式。
UIImageRenderingModeAlwaysOriginal // 始終繪制圖片原始狀態,不使用Tint Color。
UIImageRenderingModeAlwaysTemplate // 始終根據Tint Color繪制圖片,忽略圖片的顏色信息。
pragma mark -- 05 UITableViewCell的點擊效果設置
- 很多時候我們不想要那個UITableViewCell點擊時的灰色效果,可以這樣設置
cell.selectionStyle = UITableViewCellSelectionStyleNone;//取消點擊效果
//這下面三個設置了也不管用,都是灰色的背景
UITableViewCellSelectionStyleBlue
UITableViewCellSelectionStyleGray
UITableViewCellSelectionStyleDefault
pragma mark -- 06 UITableView 滑動遇到的小問題
- UITableView 滑動不到最底部,結果發現是沒有減去標簽欄的高度
//必須要把49:標簽欄的高度減去
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 99, self.view.mj_width, self.view.mj_height - 99 - 49) style:UITableViewStylePlain];
pragma mark -- 07 運行突然出現you don’t have permission to view it錯誤
解決方法:
將info.plist的文件中的Executable.file中的文件修改為:$(PRODUCT_NAME)
pragma mark — 08 設置UITableViewCell的分割線最簡單的方法
- 最快最簡單設置UITableViewCell分割線
在自定義cell的.m文件中重寫設置cell frame 的方法
#pragma mark -- 重寫cell的frame方法來自己設置Cell的布局
-(void)setFrame:(CGRect)frame
{
//設置Cell的高度少1;為cell加上分割線,分割線顏色就是tableView的背景色
frame.size.height -= 1;
[super setFrame:frame];
}
pragma mark — 09 利用導航欄跳轉時隱藏底部的tabBar欄
NextViewController *nextVc = [[NextViewController alloc]init];
//設置跳轉到的頁面標簽欄隱藏
nextVc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:nextVc animated:YES];
//設置當前界面標簽欄不隱藏
self.hidesBottomBarWhenPushed = NO;
pragma mark — 10 直接設置導航欄中間標題的字體大小和顏色
1.有時我們想設置導航欄中間標題的字體樣式,又不想去寫一個titleLable 讓:
self.navigationItem.titleView = titleLabel;
2.我們可以在系統默認的情況下直接設置
self.title = @"導航欄標題";
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSFontAttributeName:[UIFont systemFontOfSize:22],NSForegroundColorAttributeName:[UIColor orangeColor]}];
pragma mark - 11 如何設置自定義字體
輝少字體設置的博客
pragma mark - 12 AFNetWorking 請求數據報”Request failed: unacceptable content-type: text/plain” 錯誤解決方法
看這里