iOS7上的UITextField的leftView和right View视图实际上非常接近文本字段边框.

我怎样才能在这些项目上加一些(水平)填充呢?

我试着修改框架,但不起作用

uint padding = 10;//padding for iOS7
UIImageView * iconImageView = [[UIImageView alloc] initWithImage:iconImage];    
iconImageView.frame = CGRectMake(0 + padding, 0, 16, 16);
textField.leftView = iconImageView;

请注意,我对向文本字段的文本添加填充不感兴趣,比如Set padding for UITextField with UITextBorderStyleNone

推荐答案

我自己也在做这件事,并使用了这个解决方案:

- (CGRect) rightViewRectForBounds:(CGRect)bounds {

    CGRect textRect = [super rightViewRectForBounds:bounds];
    textRect.origin.x -= 10;
    return textRect;
}

这将使映像从右侧移动10倍,而不是在iOS 7中将映像挤压到边缘.

此外,这是一个UITextField的子类,可以通过以下方式创建:

  1. 创建一个子类为UITextField的新文件,而不是默认的NSObject
  2. 添加名为- (id)initWithCoder:(NSCoder*)coder的新方法以设置图像

    - (id)initWithCoder:(NSCoder*)coder {
        self = [super initWithCoder:coder];
    
        if (self) {
    
            self.clipsToBounds = YES;
            [self setRightViewMode:UITextFieldViewModeUnlessEditing];
    
            self.leftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"textfield_edit_icon.png"]];
        }
    
        return self;
    }
    
  3. 你可能要进口#import <QuartzCore/QuartzCore.h>

  4. 添加上面的rightViewRectForBounds方法

  5. 在Interface Builder中,单击要创建子类的文本字段,并将class属性更改为这个新子类的名称

Ios相关问答推荐

如何使视图完全适合屏幕,而不会在旋转时溢出手机屏幕的边界?

不使用iOS 17修改器修改SWIFT用户界面视图

通过拖动更改视图位置的SwiftUI会引发UI错误

如何在SwiftUI中基于嵌套视图中的状态动态显示外部视图的内容?

在 React Native iOS 中加载多个 JS 包

在 SwiftUI 中以编程方式插入内嵌图像

如何在Swift/Combine中从timer.publish属性传递两个参数到任意方法

比较 `某个协议` 实例时出现编译错误

在 Swift 中,对象如何被准确地从内存中移除?

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

Swift Combine:prepend() before share() 阻止初始接收器执行

iOS SwiftUI - 使用 PhotosPicker 从图库中 Select 图像或视频

迁移到 UIKit 生命周期的应用程序不会调用 SceneDelegate

Xcode 6 App Store 提交失败并显示您的帐户已经拥有有效的 iOS 分发证书

改变 UIView 位置的简单方法?

iOS 11 navigationItem.titleView 宽度未设置

将 iPhone xib 转换为 iPad xib?

'无效更新:第 0 节中的无效行数

NSURLSession:如何增加 URL 请求的超时时间?

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?