1.自定義tabbar--設(shè)置 TabBarItem 選中時的圖片及文字顏色
實現(xiàn)效果:tabbarItem的未選中和選中分別是2個圖片,并且顏色會有變化。
代碼:
'''
NSArray *nameArr = @[@"首頁",@"消息",@"直播",@"賬戶"];
NSArray *imageArr = @[@"首頁",@"消息",@"直播",@"賬戶"];
NSArray *selecImageArr = @[@"首頁_p",@"消息_p",@"直播_p",@"賬戶_p"];
//需要獲取tabbar自帶的item,然后改變其各個屬性。
NSArray *items =self.tabBar.items;
for (int i =0; i<items.count; i++) {
UIImage *image = [[UIImage imageNamed:imageArr[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *selectImage = [[UIImage imageNamed:selecImageArr[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *item = items[i];
item.image =image;
item.selectedImage = selectImage;
item.title =nameArr[i];
//改變item選中時的顏色,默認(rèn)是藍(lán)色。
[item setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]} forState:UIControlStateSelected];
}
'''
注:這個方法還是使用了tabbarItem來實現(xiàn)的,如果要實現(xiàn)更復(fù)雜的效果,比如選中變光等等,需要高度自定義,tabbarItem實現(xiàn)不了,建議子類化然后使用代理協(xié)議。
另外,子類化UIbutton代替item,該selectedImage的效果很難實現(xiàn)。
2. 設(shè)置UITableViewCell之間的間距(推薦第四種)
3.xib中修改約束
1.可以改變對應(yīng)view的frame,然后在警告中set constralnt;
2.也可以直接選中對應(yīng)的約束,然后在constant中直接改值。
3.IOS Constraints居中布局(界面,非代碼)
4. UINavigationController應(yīng)用之—-從無導(dǎo)航條push到有導(dǎo)航條
UINavigationController應(yīng)用之—-從無導(dǎo)航條push到有導(dǎo)航條
思路:在第一個viewcontroller中寫導(dǎo)航控制器的代理;當(dāng)控制器是第一個的時候,在viewcontroller將要出現(xiàn)時,隱藏該視圖控制器對應(yīng)的導(dǎo)航欄就可以了。
5.禁止scrollview上下拖動
6.iOS報錯:linker command failed with exit code 1
鏈接器命令失敗,退出代碼1
原因:
出現(xiàn)這種情況很可能是,項目中引入了多個相同的文件。刪除一個就ok!
比如:在2個文件中創(chuàng)建了2個函數(shù)同名。
7.遇到bug: 前條數(shù)據(jù)跟這下條數(shù)據(jù)一起改變。

解決:上調(diào)數(shù)據(jù)假設(shè)放在一個數(shù)組中,當(dāng)時當(dāng)顯示下一條數(shù)據(jù)的時候,該數(shù)據(jù)就應(yīng)該放在另一個數(shù)組中,而不是前一個數(shù)組。
8. BUG:exc_bad_access
該問題是因為向一個已經(jīng)釋放的對象發(fā)送消息;
該內(nèi)存區(qū)域在你認(rèn)為使用的時候卻沒有使用,該內(nèi)存區(qū)域是無法訪問的。 這時內(nèi)核會拋出一個異常( EXC ),表明你的應(yīng)用程序不能訪問該存儲器區(qū)域(BAD ACCESS) 。
造成內(nèi)存泄露。
例如:
-(instancetype)initWithNumber:(int)number withColor:(UIColor*)ballColor{
//如果忘記寫該行代碼,當(dāng)創(chuàng)建該類對象時,會造成內(nèi)存泄露。
// self = [super init];
if (self!= nil) {
}
return self;
}
9.如何在IOS項目中調(diào)用C的函數(shù)
詳見
不可以在2個類中創(chuàng)建同名的函數(shù)。
10.UITableViewCell 在IOS7的父視圖是UITableViewWrapperView
cell-->UITableViewWrapperView-->tableView
11.加載xib文件,如果想在初始化的時候就添加點東西
直接在viewDidLoad中添加
12. 對xib中創(chuàng)建的控件,使用代碼改其屬性。
在開發(fā)中我們會遇到xib拖放的控件.不能滿足我們的一些特殊屬性的設(shè)置,需要我們用代碼設(shè)置,但是這個時候又不知道代碼寫在哪合適,寫到setter里是肯定不行的哦,這時候我們只需要重寫 - (void)drawRect:(CGRect)rect
方法就行了
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
//在這里寫控件額外屬性的設(shè)置
_labelArea.layer.borderWidth =0.3f;
[_labelArea.layersetCornerRadius:3.0f];
_labelArea.layer.borderColor = [RGB(224,224, 224) CGColor];
}
13.iOS中收起鍵盤的幾種方式
http://www.itdecent.cn/p/532d12375e9a
14.iOS 一個類里面多個@implementation
.h文件中包含
@interface SalesProject : NSObject <JsonAndObjectTransformProtocol>
@interface SalesProjectPrimaryInfo : NSObject <JsonAndObjectTransformProtocol>
@interface SalesProjectStatus : NSObject
.m文件包含
@implementation SalesProject : NSObject <JsonAndObjectTransformProtocol>
@implementation SalesProjectPrimaryInfo : NSObject <JsonAndObjectTransformProtocol>
@implementation SalesProjectStatus : NSObject
不過這樣寫并沒有什么太多的好處,好處僅僅有:
1.節(jié)省幾個文件。
2.這幾個類互相之間不需要再引入。對于別的類,當(dāng)你引入這個 .h 文件的時候,把這幾個類都一起引入了。
第 2 點也可以看做一個破壞封裝性的缺點了。所以這樣做是比較少見的,僅在定義一些數(shù)據(jù)結(jié)構(gòu)的時候會這樣用。比如像你舉的例子中,如果SalesProjectPrimaryInfo、SalesProjectStatus是數(shù)據(jù)類,里面主要以屬性為主,方法較少,且它們的聯(lián)系很緊密,這樣用就會方便一些了。