iOS*_*wan 24 cocoa-touch alignment uitextfield ios leftalign
我想把UITextField文字的左边距放在10像素.最好的方法是什么?
Ria*_*rim 44
您可以通过扩展UITextField类和重写两个方法来实现:
- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)editingRectForBounds:(CGRect)bounds;
Run Code Online (Sandbox Code Playgroud)
这是代码:
界面在 MYTextField.h
@interface MYTextField : UITextField
@end
Run Code Online (Sandbox Code Playgroud)
它的实施 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
Run Code Online (Sandbox Code Playgroud)
clo*_*pez 20
正如我在之前的评论中所解释的那样,在这种情况下,最好的解决方案是扩展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
Run Code Online (Sandbox Code Playgroud)
类别旨在向现有类添加新功能,而不是覆盖现有方法.
btm*_*dan 11
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;
Run Code Online (Sandbox Code Playgroud)
试试这个代码
对于Swift 3:
做一个出口UITextField,比如usernameTextField.然后在下面编写以下代码viewDidLoad()
let paddingView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
usernameTextField.leftView = paddingView
usernameTextField.leftViewMode = .always
Run Code Online (Sandbox Code Playgroud)
width: 5如果需要更多空间,请将值更改为更大的值.
我希望在属性检查器中的IB中看到一个设置来调整此值。原来,我无意中将对齐方式和边框样式设置为与左侧填充混淆的值。
您不会认为选择左对齐和无边界没什么大不了的,但是这会使单词基本上重叠或右移到框的边缘,而且看起来不正确。
坏:
好:
为我修复它。希望这对其他人也有帮助。
小智 5
子类化 UITextField 并添加扩展:
extension UITextField {
func paddingLeft(inset: CGFloat){
self.leftView = UIView(frame: CGRect(x: 0, y: 0, width: inset, height: self.frame.height))
self.leftViewMode = UITextField.ViewMode.always
}
}
Run Code Online (Sandbox Code Playgroud)
用法
class MyUITextFieldClass: UITextField {
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.paddingLeft(inset: 10)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29632 次 |
| 最近记录: |