Bob*_*suk 52 objective-c uitextfield ios
我正在使用以下代码更改占位符文本颜色,但是当我尝试添加NSFontAttribute时,我得到编译器错误 "too many arguments to method call, expect 2 have 3"
UIColor *color = [UIColor blackColor];
_nameField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Your Name" attributes:@{NSForegroundColorAttributeName: color},@{NSFontAttributeName:@"Roboto-Bold"}];
Run Code Online (Sandbox Code Playgroud)
这工作正常:
UIColor *color = [UIColor blackColor];
_nameField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Your Name" attributes:@{NSForegroundColorAttributeName: color}];
Run Code Online (Sandbox Code Playgroud)
dde*_*vaz 132
Objective-C的:
UIColor *color = [UIColor blackColor];
someUITextField.attributedPlaceholder =
[[NSAttributedString alloc] initWithString:@"Placeholder Text"
attributes:@{
NSForegroundColorAttributeName: color,
NSFontAttributeName : [UIFont fontWithName:@"Roboto-Bold" size:17.0]
}
];
Run Code Online (Sandbox Code Playgroud)
(文字dictionary键值对之间没有括号.)
迅速:
let attributes = [
NSForegroundColorAttributeName: UIColor.blackColor(),
NSFontAttributeName : UIFont(name: "Roboto-Bold", size: 17)! // Note the !
]
someUITextField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes:attributes)
Run Code Online (Sandbox Code Playgroud)
aya*_*aya 21
Swift 4.x更新:
textField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [
.foregroundColor: UIColor.lightGray,
.font: UIFont.boldSystemFont(ofSize: 14.0)
])
Run Code Online (Sandbox Code Playgroud)
为了方便快捷的人:
someTextField.attributedPlaceholder = NSAttributedString(string: "someString",
attributes:[NSForegroundColorAttributeName: UIColor.lightGrayColor(), NSFontAttributeName: PlaceHolderFont])
Run Code Online (Sandbox Code Playgroud)
您应该继承UITextField,并覆盖以下方法:
- (void)drawPlaceholderInRect:(CGRect)rect;
Run Code Online (Sandbox Code Playgroud)
以下是以下实现:
- (void)drawPlaceholderInRect:(CGRect)rect {
NSDictionary *attributes = @{
NSForegroundColorAttributeName : [UIColor lightGrayColor],
NSFontAttributeName : [UIFont italicSystemFontOfSize:self.font.pointSize]
};
// center vertically
CGSize textSize = [self.placeholder sizeWithAttributes:attributes];
CGFloat hdif = rect.size.height - textSize.height;
hdif = MAX(0, hdif);
rect.origin.y += ceil(hdif/2.0);
[[self placeholder] drawInRect:rect withAttributes:attributes];
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请单击此处
感谢@ddevaz 的回答。
以上答案适用于UITextField. 但是当我使用UITextField子类并尝试在其中执行此方法时。然后它不工作。
仅当您将UITextField. 在您的UITextField子类中覆盖以下方法,它将为您完成工作。
- (void) drawPlaceholderInRect:(CGRect)rect {
NSDictionary *attrDictionary = @{
NSForegroundColorAttributeName: [UIColor lightGrayColor],
NSFontAttributeName : [UIFont fontWithName:@"Menlo" size:17.0]
};
[[self placeholder] drawInRect:rect withAttributes:attrDictionary];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59644 次 |
| 最近记录: |