目的是實現例如以下的效果:
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 在裡面定義我們的屬性和宣告我們的整...