激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS開發(fā)之自定義UITextField的方法

iOS開發(fā)之自定義UITextField的方法

2021-01-18 13:39blue-fly IOS

UITextField是IOS開發(fā)中用戶交互中重要的一個控件,常被用來做賬號密碼框,輸入信息框等。本文給大家介紹iOS開發(fā)之自定義UITextField的方法,感興趣的朋友一起學習吧

uitextfield是ios開發(fā)中用戶交互中重要的一個控件,常被用來做賬號密碼框,輸入信息框等。

iOS開發(fā)之自定義UITextField的方法

觀察效果圖

uitextfield有以下幾種特點:

1.默認占位文字是灰色的

2.當光標點上去時,占位文字變?yōu)榘咨?/p>

3.光標是白色的

接下來我們通過不同的方法來解決問題

一.將xib中的uitextfield與代碼關(guān)聯(lián)

?
1
2
3
4
5
6
7
8
9
10
11
通過nsattributestring方法來更改占位文字的屬性
(void)viewdidload {
[super viewdidload];
// do any additional setup after loading the view from its nib.
//文字屬性
nsmutabledictionary *dict = [nsmutabledictionary dictionary];
dict[nsforegroundcolorattributename] = [uicolor graycolor];
//帶有屬性的文字(富文本屬性)nsattributestring
nsattributedstring *attr = [[nsattributedstring alloc] initwithstring:@"手機號" attributes:dict];
self.phonefield.attributedplaceholder = attr;
}

但是這種方法只能做出第一種效果,而且不具有通用性。

二.自定義一個uitextfield的類

重寫它的drawplaceholderinrect方法

?
1
2
3
4
5
6
//畫出占位文字- (void)drawplaceholderinrect:(cgrect)rect {
[self.placeholder drawinrect:cgrectmake(0, 13, self.size.width, 25) withattributes:@{
nsforegroundcolorattributename : [uicolor graycolor],
nsfontattributename : [uifont systemfontofsize:14]
}];
}

這個方法和上一個方法類似,只能做出第一種效果,但這個具有通用性

三.利用runtime運行時機制

runtime是官方的一套c語言庫

能做出很多底層的操作(比如訪問隱藏的一些成員變量\成員方法)

?
1
2
3
4
5
6
7
8
9
10
(void)initialize {
unsigned int count = 0;
ivar *ivars = class_copyivarlist([uitextfield class] , &count);
for (int i = 0; i < count; i++) {
//取出成員變量
ivar ivar = *(ivars + i);
//打印成員變量名字
ddzlog(@"%s",ivar_getname(ivar));
}
}

利用class_copyivarlist這個c函數(shù),將所有的成員變量打印出來

iOS開發(fā)之自定義UITextField的方法

這樣我們就可以直接通過kvc進行屬性設(shè)置了

?
1
2
3
4
5
- (void)awakefromnib {
//修改占位文字顏色
[self setvalue:[uicolor graycolor] forkeypath:@"_placeholderlabel.textcolor"]; //設(shè)置光標顏色和文字顏色一致
self.tintcolor = self.textcolor;
}

通過這個方法可以完成所有的效果,既具有通用性也簡單

最后一個效果是

在獲得焦點時改變占位文字顏色

在失去焦點時再改回去

?
1
2
3
4
5
6
7
8
9
10
//獲得焦點時
- (bool)becomefirstresponder {
//改變占位文字顏色
[self setvalue:self.textcolor forkeypath:@"_placeholderlabel.textcolor"]; return [super becomefirstresponder];
}
//失去焦點時
- (bool)resignfirstresponder {
//改變占位文字顏色
[self setvalue:[uicolor graycolor] forkeypath:@"_placeholderlabel.textcolor"]; return [super resignfirstresponder];
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 看91 | 久草手机视频在线观看 | 亚洲精品在线观看网站 | 多人乱大交xxxxx变态 | 久久精品久久精品国产大片 | 免费观看一区二区三区 | 成人国产精品免费 | 成人免费观看在线视频 | 国内精品久久久久影院不卡 | 国产精品一区二区三区在线播放 | 怦然心动50免费完整版 | 精品欧美一区二区精品久久 | 精品欧美一区二区精品久久久 | 黄色网址你懂的 | 亚洲一级片免费观看 | 91在线视频福利 | 久久精品视频1 | 日本不卡一区二区三区在线 | 在线播放污 | 国产精品久久久久久久久久iiiii | ⅴideo裸体秀hd | 国产午夜电影在线观看 | 依人在线视频 | hd性videos意大利复古 | 久久国产精品一区 | 中文字幕亚洲一区二区三区 | 女人a级毛片 | 毛片在线免费播放 | 欧美一级精品片在线看 | 成人毛片视频免费看 | 久久蜜臀一区二区三区av | 久久福利精品 | 中文字幕一区久久 | 久草在线视频网 | 精品成人网 | 国产一级片91 | 羞羞视频免费视频欧美 | 久久亚洲网 | 中文字幕专区高清在线观看 | 97精品视频在线观看 | 依人在线视频 |