uiTextField中的文本向右XX像素(xcode)
我有一个UITextField
的自定义背景。但UITextField
的前20个像素是由设计采取的。文本应从左侧开始30像素。我搜索了很多,但我找不到它。我已经看到像重写属性这样的东西,但是对于这个基本的东西来说真的是必要的吗?uiTextField中的文本向右XX像素(xcode)
我已经看到了两种不同的解决方案:
- 添加一个空
UIView
当UITextView
- 子类的UITextField的
leftView
财产,并覆盖方法textRectForBounds:
editingRectForBounds:
- 刚刚返回框架与插图应用
恕我直言,第二个更优雅。
举例: .H:
#import <UIKit/UIKit.h>
@interface BlackTextField : UITextField
@property (nonatomic, assign) CGFloat paddingRight, paddingTop, paddingLeft, paddingBottom;
@end
.M:
#import "BlackTextField.h"
#import <QuartzCore/QuartzCore.h>
@implementation BlackTextField
@synthesize paddingTop, paddingBottom, paddingLeft, paddingRight;
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
self.paddingRight = 10;
self.paddingLeft = 10;
self.paddingTop = 5;
self.paddingBottom = 5;
}
return self;
}
- (CGRect)textRectForBounds:(CGRect)bounds
{
return CGRectMake(bounds.origin.x + self.paddingLeft, bounds.origin.y + self.paddingTop, bounds.size.width - self.paddingLeft - self.paddingRight, bounds.size.height - self.paddingTop - self.paddingBottom);
}
- (CGRect)editingRectForBounds:(CGRect)bounds
{
return [self textRectForBounds:bounds];
}
@end
我不是OP,但你可以分享如何实现第二个子弹?我期望做同样的 – 2012-03-03 20:20:34
我已经添加了一些示例代码。对我来说就像一个魅力。 – wzs 2012-03-05 14:08:07
最简单的方法是创建一个UIImageView
并将UITextField
放在上面。
问题解决。
供参考:你可以继承UITextField
,但这将是一个庞大而复杂的工作。因为我不会推荐为非标准视图,并且在当前和未来可能会有很多陷阱。
我对上面关于子类化的回答者发表了评论,但唯一的问题是如果你最初使用的是UIColor patternImage?我不明白如何通过自己的方式实现这一目标。 – 2012-03-03 20:21:25
有可能是你的'UITextField'将超过1线长? – HelmiB 2012-03-03 16:35:47