我想將UITextField
的文本的左邊距設置爲10像素。什麼是最好的方式來做到這一點?將左邊距添加到UITextField
回答
執行正如我在以前的評論已經解釋過,在這種情況下,最好的解決辦法是擴大而不是使用一個類別UITextField類,所以你可以使用它明確地在所需的文本字段上。
#import <UIKit/UIKit.h>
@interface MYTextField : UITextField
@end
@implementation MYTextField
- (CGRect)textRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
- (CGRect)editingRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
@end
類別旨在將新功能添加到現有類,而不是覆蓋現有方法。
我幾乎覆蓋- (CGRect)textRectForBounds:(CGRect)bounds
。現在的問題是,當文本字段在進入到編輯模式的左邊距重置爲零.......
@implementation UITextField(UITextFieldCatagory)
- (CGRect)textRectForBounds:(CGRect)bounds {
CGRect theRect=CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-10, bounds.size.height);
return theRect;
}
嗨需要一個soln? – iOSPawan 2011-04-15 09:40:31
爲什麼不是bounds.origin.y - 20? – 2013-12-17 20:22:32
您可以通過擴展UITextField
類試試這個
TextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
TextField.textAlignment = UITextAlignmentCenter;
我希望左邊距爲10 Px – iOSPawan 2011-04-15 09:23:11
你可以做到這一點,壓倒一切的兩種方法:
- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)editingRectForBounds:(CGRect)bounds;
下面是代碼:
在接口
@interface MYTextField : UITextField
@end
其在MYTextField.m
@implementation MYTextField
static CGFloat leftMargin = 28;
- (CGRect)textRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
- (CGRect)editingRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
@end
感謝它爲我工作......但我有一個問題,它使用我的應用程序中的所有文本字段。我希望這是在特定的視圖控制器文本字段。可以你幫助我。 – Sabby 2012-02-10 12:22:19
這是分類的預期行爲,在這種情況下不是解決方案。您必須擴展UITextField並覆蓋相同的方法。所以使用@clopez解決方案。 – TwiterZX 2012-04-02 08:22:46
首先我投了票,但後來投了票。如果您爲原點添加10像素,則需要從寬度中減去_20_ px以在左側和右側保留相同的邊距。正如上面已經提到的那樣,通過一個類別加入重寫方法真的是一個壞主意。 – 2012-09-10 15:47:41
UITextField * textField = [[UITextField alloc]init];
[textField setDelegate:self];
[textField setFrame:CGRectMake(170,112,140,25)];
[textField setBorderStyle:UITextBorderStyleNone];
[textField setBackgroundColor:[UIColor clearColor]];
[self.View addSubview:noofChildTField];
UIView *paddingView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)] autorelease];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
試試這個代碼
太棒了!謝謝!如果我們需要更大的利潤率,只需修改CGRectMake 5即可獲得更多價值。 – 2015-12-23 08:40:34
我希望看到在IB設置在屬性檢查器來調整這個值。事實證明,我已經無意中將對齊和邊框樣式設置爲與左側填充混淆的值。
你不會認爲選擇左對齊和沒有邊框會是一件大事,但它會使得單詞基本重疊或直接來到盒子的邊緣,並且看起來不正確。
壞:
好:
固定它直到我。希望這可以幫助別人。
+1注意到'UITextBorderStyleRoundedRect'爲TextField添加了一個很好的左邊距,而'UITextBorderStyleNone'加上了你自己的(直角)邊框則將文本放到了邊緣。 – pkamb 2016-11-18 03:52:21
對於斯威夫特3:
充分利用UITextField
的出口,說usernameTextField。然後,如果需要更多的空間寫了下面的代碼viewDidLoad()
let paddingView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
usernameTextField.leftView = paddingView
usernameTextField.leftViewMode = .always
更改width: 5
到更大的價值。
這比子類更好... :) – chrisoneiota 2017-10-09 14:16:11
- 1. 如何在ios的uitextfield的左側添加左側邊距?
- 2. 在swift中添加填充到UITextField的左邊距
- 3. 重置UITextField左邊距
- 4. BoxLayout添加左邊距
- 5. 將邊距添加到UITableView
- 6. 將左右邊距添加到UITableViewController裏面的表格視圖
- 7. flexbox在Safari中添加1px左邊距
- 8. 如何將邊距添加到FlowPanel?
- 9. 將按鈕添加到UISearchBar的左邊
- 10. 將MD5添加到UITextField
- 11. 將按鈕添加到uitextfield
- 12. HTML Dreamweaver左邊距
- 13. 無法將圖像添加到UITextField的左視圖ios7
- 14. 添加負邊距以滾動到ID
- 15. IE9 img hover添加邊距到底
- 16. 增加MooTools中的左邊距
- 17. 如何將邊距添加到背景圖像到文本框?
- 18. 爲每列添加邊距
- 19. 在JTextArea中添加邊距?
- 20. 用CSS添加頁邊距
- 21. 在android中添加邊距
- 22. 菜單從左側滑入 - 添加頂部邊距偏移
- 23. 爲什麼jQuery append()爲「ajaxed」數據添加左邊距/填充?
- 24. 如何爲表格單元部分添加左右邊距?
- 25. Bootstrap自動向左側和右側添加邊距
- 26. 向引導行中的元素添加左右邊距
- 27. 如何添加對話框的左右邊距
- 28. Angular Slider - html我需要添加左右邊距
- 29. 如何在UITableViewCell iOS中添加左邊距Xamarin
- 30. 值添加到UITextField
一個問題。我如何使用Storyboard或Interface Builder中的這個新的擴展類?非常感謝。 – Ricardo 2012-04-24 13:38:07
Hi Ricardo,您需要選擇Storyboard或Interface Builder中的元素並在Identity Inspector中編輯自定義類。 http://grrrab.it/5rr3xy – clopez 2012-04-24 15:35:23
感謝clopez,現在完美的工作!:) – Ricardo 2012-04-24 20:47:22