首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rightView UITextField的位置

rightView UITextField的位置
EN

Stack Overflow用户
提问于 2013-08-22 11:07:52
回答 3查看 16.7K关注 0票数 11

有没有办法调整UITextField上rightView的位置?我试着在视图上设置框架(设置为rightView),但是没有改变任何东西。

我想避免创建两个视图,一个作为rightView,另一个作为rightView的子视图,如果可能的话,我会改变子视图的位置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-22 13:03:54

右侧覆盖视图被放置在由接收器的rightViewRectForBounds:方法返回的矩形中。

所以我建议你子类化UITextField并覆盖这个方法,如下所示:

代码语言:javascript
复制
@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 ;
}
票数 29
EN

Stack Overflow用户

发布于 2017-07-04 17:46:23

@Puneet Sharma的回答很好,但这就需要创建一个类来作为UITextField的子类,而我所做的是创建一个充当填充的UIView。

此代码无需子类即可工作

以下是我的代码,尽管它是用Swift 3编写的

代码语言:javascript
复制
// 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,它有一个透明的彩色背景,然后给人一种有填充的错觉,而实际上没有。

票数 11
EN

Stack Overflow用户

发布于 2019-11-20 14:48:05

您可以将右填充用作

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档