有没有办法在 UITextField 上调整 rightView 的位置?我尝试在视图上设置框架(设置为 rightView),但它没有改变任何东西。
我想避免制作两个视图,一个作为 rightView,一个作为 rightView 的子视图,如果可能的话,我会在其中更改子视图的位置。
有没有办法在 UITextField 上调整 rightView 的位置?我尝试在视图上设置框架(设置为 rightView),但它没有改变任何东西。
我想避免制作两个视图,一个作为 rightView,一个作为 rightView 的子视图,如果可能的话,我会在其中更改子视图的位置。
右侧覆盖视图放置在rightViewRectForBounds
接收器的 : 方法返回的矩形中。
所以我建议你继承UITextField
并覆盖这个方法,像这样:
@interface CustomTextField: UITextField
@end
@implementation CustomTextField
// override rightViewRectForBounds method:
- (CGRect)rightViewRectForBounds:(CGRect)bounds{
CGRect rightBounds = CGRectMake(bounds.origin.x + 10, 0, 30, 44);
return rightBounds ;
}
@Puneet Sharma 的回答很棒,但这将需要创建一个子类化的类UITextField
,而我所做的是创建一个 UIView 作为填充。
此代码无需子类即可工作
这是我的代码,虽然它是用Swift 3编写的
// this is the view I want to see on the rightView
let checkImageView = UIImageView(image: UIImage(named: "check24.png"))
checkImageView.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
checkImageView.curveEdges(12)
checkImageView.contentMode = .scaleAspectFit
// declare how much padding I want to have
let padding: CGFloat = 6
// create the view that would act as the padding
let rightView = UIView(frame: CGRect(
x: 0, y: 0, // keep this as 0, 0
width: checkImageView.frame.width + padding, // add the padding
height: checkImageView.frame.height))
rightView.addSubview(checkImageView)
// set the rightView UIView as the textField's rightView
self.textField.rightViewMode = .whileEditing
self.textField.rightView = rightView
这里发生的事情是,rightView
这是一个UIView
具有透明彩色背景的,然后给人一种有填充而没有填充的错觉。
您可以使用的右填充
let imageview = UIImageView(image: UIImage(named: "image name"))
imageview.contentMode = .center
let rightPadding: CGFloat = 14 //--- change right padding
imageview.frame = CGRect(x: 0, y: 0, width: imageview.frame.size.width + rightPadding , height:imageview.frame.size.height)
textField.rightViewMode = .always
textFieldd.rightView = imageview