UITextFiled文字簡陋的抖動效果

最終設置UITextField的placeholder效果(實際效果可能比這好一點點...):


有需求1如下:

  • 未點擊時UITextField的placeholder為淺灰色
  • 點擊后宾巍,還未進行輸入時戒幔,UITextField的placeholder變?yōu)樯罨疑?/li>

這個實現(xiàn)并不難:

  • 通過通知或者重寫UITextField的響應者處理方法(becomeFirstResponder/resignFirstResponder)讨勤,都可以實現(xiàn)捕獲點擊時間
  • UITextField設置placeholder可以使用以下屬性:
    • 通過設置這個富文本屬性,可以得到豐富多彩的placeholder
@NSCopying var attributedPlaceholder: NSAttributedString?

// 附帶光標顏色屬性
var tintColor: UIColor!

但是需求2加了點東西:

  • 點擊后侠畔,還未進行輸入時扼脐,UITextField的placeholder文字左右進行小幅度抖動

可以看到通過設置attributedPlaceholder,可以改變一些靜態(tài)的屬性霎终,如顏色和文字大小。

但是如果需要里面的文字做一些簡單的抖動效果貌似就不行了升薯,UITextField沒有提供相關屬性莱褒,我們也不知道placeholder是在何種控件中顯示的。

既然不知道placeholder是在何種控件中顯示涎劈,那就通過以下代碼打印出UITextField中所有的成員變量(函數(shù)參考runtime基礎元素解析)广凸,看看是否會有什么發(fā)現(xiàn):

Ivar *ivars = class_copyIvarList([UITextField class], &outCount);

for (int i = 0; i < outCount; i++) {
    Ivar ivar = ivars[i];

    NSLog(@"%s", ivar_getName(ivar));
}

free(ivars);

截取關鍵部分如下:


從字面上看,上面的_placeholderLabel是否就是顯示placeholder的控件责语?

測試實際結果的確是顯示placeholder的控件炮障。

只要有了這個控件目派,那要做一些小抖動的動畫那就沒什么問題了坤候,先獲取這個UILabel:

private var tpcPlaceholderLabel:UILabel? {
    get {
        return self.valueForKey("_placeholderLabel") as? UILabel
    }
}

然后重寫UITextField的響應者處理函數(shù):

// 成為第一響應者
override func becomeFirstResponder() -> Bool {
    
    if normalColor == nil {
        normalColor = tpcPlaceholderLabel?.textColor
    }
    
    if selectedColor == nil {
        selectedColor = tpcPlaceholderLabel?.textColor
    }
    
    tpcPlaceholderLabel?.textColor = selectedColor

    UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.1, initialSpringVelocity: 10, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
        tpcPlaceholderLabel?.transform = CGAffineTransformMakeTranslation(10, 0)
        }, completion: nil)
    
    return super.becomeFirstResponder()
}

// 放棄第一響應者
override func resignFirstResponder() -> Bool {
    
    tpcPlaceholderLabel?.transform = CGAffineTransformIdentity

    tpcPlaceholderLabel?.textColor = normalColor
    
    return super.resignFirstResponder()
}

這樣就可以做簡單的抖動了

還有一點,根據(jù)上面打印的UITextField成員變量企蹭,看到了_displayLabel白筹,這個就是在鍵盤輸入后顯示文字的UILabel了智末。這個屬性可以用來干嘛?

我想徒河,可能會有這么一種需求(不過可能沒有)系馆,就是用戶輸入錯誤時,UITextField中已經(jīng)輸入的文字做簡單左右抖動顽照,并且顏色變?yōu)榧t色由蘑,以間接的形式,輔助提醒用戶代兵,這一欄輸錯了尼酿,而不是彈出一個HUB

由于UITextField內(nèi)部做了某些處理植影,所以無法在成為第一響應者時做一些動作裳擎,那么,就在放棄第一響應者函數(shù)中思币。

相關代碼如下:

// 設置一個在放棄第一響應者調(diào)用的閉包屬性
var operateWhenResignFirstResponder: (() -> ())?

// 在func resignFirstResponder() -> Bool函數(shù)中調(diào)用
if let operate = operateWhenResignFirstResponder {
    operate()
}

代碼地址

UITextFiled內(nèi)部文字抖動效果

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹿响,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谷饿,更是在濱河造成了極大的恐慌惶我,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博投,死亡現(xiàn)場離奇詭異指孤,居然都是意外死亡,警方通過查閱死者的電腦和手機贬堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門恃轩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黎做,你說我怎么就攤上這事叉跛。” “怎么了蒸殿?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵筷厘,是天一觀的道長。 經(jīng)常有香客問我宏所,道長酥艳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任爬骤,我火速辦了婚禮充石,結果婚禮上,老公的妹妹穿的比我還像新娘霞玄。我一直安慰自己骤铃,他們只是感情好拉岁,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惰爬,像睡著了一般喊暖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撕瞧,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天陵叽,我揣著相機與錄音,去河邊找鬼丛版。 笑死咨跌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的硼婿。 我是一名探鬼主播锌半,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寇漫!你這毒婦竟也來了刊殉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤州胳,失蹤者是張志新(化名)和其女友劉穎记焊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栓撞,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡遍膜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓤湘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢颅。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弛说,靈堂內(nèi)的尸體忽然破棺而出挽懦,到底是詐尸還是另有隱情,我是刑警寧澤木人,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布信柿,位于F島的核電站,受9級特大地震影響醒第,放射性物質(zhì)發(fā)生泄漏渔嚷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一稠曼、第九天 我趴在偏房一處隱蔽的房頂上張望形病。 院中可真熱鬧,春花似錦、人聲如沸窒朋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侥猩。三九已至,卻和暖如春抵赢,著一層夾襖步出監(jiān)牢的瞬間欺劳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工铅鲤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留划提,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓邢享,卻偏偏與公主長得像鹏往,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骇塘,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容