自己定義UITextField

2021-09-07 11:09:26 字數 1980 閱讀 6443

目的是實現例如以下的效果:

uitextfield的leftview是自己定義的uiview,當中:

1、包括乙個居中顯示的icon。而且上,左,下各有1px的間隙

2、左上和左下是圓角,右邊沒有圓角

關鍵是leftview不是uiimageview。而是把uiimageview設定為subview

cgfloat height = frame.size.height;

uiview *leftview = [[uiview alloc] initwithframe:cgrectmake(0, 1, height - 1, height - 2)];

uiimageview *icon = [[uiimageview alloc] initwithimage:[uiimage imagenamed:iconname]];

icon.frame = cgrectmake(height / 4, height / 4, height / 2, height / 2);

[leftview addsubview:icon];

上面的**,使icon在leftview居中顯示top和bottom的間隙非常easy做,僅僅要令leftview的height比uitextfield的height少2。然後y設定為1

左側的間隙比較麻煩,首先將width設定為比uitextfield的width少1。可是直接設定x為1無效。須要override下面方法:

-(cgrect) leftviewrectforbounds:(cgrect)bounds
製造全部的圓角比較簡單,僅僅須要:

self.layer.cornerradius = 5;
可是要製造部分圓角,就比較麻煩:

uibezierpath *maskpath = [uibezierpath bezierpathwithroundedrect:leftview.bounds byroundingcorners:uirectcornertopleft | uirectcornerbottomleft cornerradii:cgsizemake(5, 5)];

cashapelayer *masklayer = [[cashapelayer alloc] init];

masklayer.frame = leftview.bounds;

masklayer.path = maskpath.cgpath;

leftview.layer.mask = masklayer;

self.layer.shadowcolor = [uicolor colorwithred:132/255.0f green:214/255.0f blue:219/255.0f alpha:1.0f].cgcolor;

self.layer.shadowopacity = 0.5;

self.layer.shadowoffset = cgsizemake(3, 3);

@implementation lostextfield

-(id)initwithframe:(cgrect)frame icon:(nsstring*)iconname

return self;

}-(cgrect) leftviewrectforbounds:(cgrect)bounds

@end

self.username = [[lostextfield alloc] initwithframe:cgrectmake(20, 150, 280, 40) icon:@"login_username"];

UITextField 自定義搜尋欄

1,建立uitextfield,並且設定 searchfield uitextfield alloc initwithframe cgrectmake 0,5,320,36 searchfield.textcolor uicolor colorwithred 0.0 255.0 green 103....

iOS開發之自定義UITextField的方法

uitextfield是ios開發中使用者互動中重要的乙個控制項,常被用來做賬mikuozu號密碼框,輸入資訊框等。觀察效果圖 uitextfield有以下幾種特點 1.預設佔位文字是灰色的 2.當光標點上去時,佔位文字變為白色 3.游標是白色的 接下來我們通過不同的方法來解決問題 一.將xib中的...

android自己定義控制項 自己定義View屬性

1 自己定義view的屬性 2 在view的構造方法中獲得我們自己定義的屬性 3 重寫onmesure 4 重寫ondraw 3這個步驟不是必須,當然了大部分情況下還是須要重寫的。1 自己定義view的屬性,首先在res values 下建立乙個attrs.xml 在裡面定義我們的屬性和宣告我們的整...