iOS中改變uiTextField的游標起始位置

2021-07-08 14:51:41 字數 2345 閱讀 7032

uitextfield作為輸入框,在很多場景都會使用,一般我們都是對齊預設的布局做一些更改,常用的可能會修改游標的顏色,placeholder的顏色,字型等等,有些修改直接設定uitextfield的屬性就可以,有些則沒有,需要重寫它提供的一些方法才可以,有些則怎麼都辦不到,例如修改游標的寬度,如果哪位知道,請告訴我下,謝謝。

1. 修改游標的位置

mesearchtextfield.h

#import @inte***ce mesearchtextfield : uitextfield

@end

mesearchtextfield.m

#import "mesearchtextfield.h"

@implementation mesearchtextfield

// 控制placeholder的位置,左右縮20,但是游標位置不變

/*-(cgrect)placeholderrectforbounds:(cgrect)bounds

*/// 修改文字展示區域,一般跟editingrectforbounds一起重寫

- (cgrect)textrectforbounds:(cgrect)bounds

// 重寫來編輯區域,可以改變游標起始位置,以及游標最右到什麼地方,placeholder的位置也會改變

通過上圖可以看到,游標初始位置實際上跟輸入框邊距是x+10起了作用,然後你一直編輯,發現游標不會到最後,會停留在關閉按鈕前面,這個是通過bounds.size.width-25來設定的。。。

二、uitextfield的其他屬性

// 搜尋框

_searchfieldtext.backgroundcolor = uicolorfromhex(0xdedede);

_searchfieldtext.borderstyle = uitextborderstylenone;

_searchfieldtext.font = fontlarge;

_searchfieldtext.textcolor = colortextlight;

_searchfieldtext.placeholder = @" 搜尋";

_searchfieldtext.delegate = self;

_searchfieldtext.layer.cornerradius = 2;

_searchfieldtext.returnkeytype = uireturnkeysearch; //設定按鍵型別

_searchfieldtext.enablesreturnkeyautomatically = yes; //這裡設定為無文字就灰色不可點

_searchfieldtext.clearbuttonmode = uitextfieldviewmodewhileediting; // 出現刪除按鈕

// 設定佔位文字的顏色為紅色

[_searchfieldtext setvalue:colortextlight forkeypath:@"_placeholderlabel.textcolor"];

// 游標顏色

_searchfieldtext.tintcolor = colortextlight;

三、重寫的一些方法

– textrectforbounds:  //重寫來重置文字區域

– drawtextinrect:    //改變繪文字屬性.重寫時呼叫super可以按預設圖形屬性繪製,若自己完全重寫繪製函式,就不用呼叫super了.

– placeholderrectforbounds:  //重寫來重置佔位符區域

– drawplaceholderinrect:  //重寫改變繪製佔位符屬性.重寫時呼叫super可以按預設圖形屬性繪製,若自己完全重寫繪製函式,就不用呼叫super了

– borderrectforbounds:  //重寫來重置邊緣區域

– editingrectforbounds:  //重寫來重置編輯區域

– clearbuttonrectforbounds:  //重寫來重置clearbutton位置,改變size可能導致button的失真

– leftviewrectforbounds:

– rightviewrectforbounds:

ios中textarea顏色無法改變問題

但是android卻沒有什麼問題,最後才發現原來是 disable 惹的禍,在ios系統下disable是有預設樣式的。我本意是想著在詳情檢視頁並不希望他選中 textarea 的,因為使用 readonly 是可以被選中的 這才使用 disable 的,下面給出兩個解決方案 1.採用readonl...

iOS動態改變TableView Cell高度

我們知道tableview的heightforrowatindexpath 會在 cellforrowatindexpath 方法之前執行,因此在計算cell高度的時候就不能通過 的cell來計算,這樣就導致動態計算高度變得有點困難。今天在網上找到下面的一種方法 建立 的cell pragma ma...

iOS 如何改變section header

希望這個從uitableviewdelegate協議裡得到的方法可以對你有所幫助 uiview tableview uitableview tableview viewforheaderinsection nsinteger section 使用任何你喜歡uicolor代替 uicolor redc...