UIViewContentModeScaleAspectFit

UIViewContentModeScaleAspectFit

我想在文本字段中使用一个图标,并且正在使用setLeftView属性。
我目前的代码是

    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 26, tb_teamA_playerA.bounds.size.height)];
    leftView.contentMode = UIViewContentModeScaleAspectFit;
    [leftView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed : @"person_26" ]]];
    [tb_teamA_playerA setLeftView :leftView];
    [tb_teamA_playerA setLeftViewMode: UITextFieldViewModeAlways];


这就是结果。



最左边的图像是一个单独的UIImageView,具有相同的图像集,并且比例尺设置为ScaleAspectFit。
因此,我期望两个图像的大小和比例相同,但不是吗?!

最佳答案

您正在使用UIViewContentModeScaleAspectFit,因此图像将适合UITextField的大小。
我认为您应该使用UIViewContentModeScaleAspectFill,并且如果您在尺寸上有问题,并且两个图像的尺寸仍然不相同,则应该调整图像的大小。

以下来自Doc

UIViewContentModeScaleToFill


  如有必要,可通过更改内容的纵横比来缩放内容以适合其自身的大小。


UIViewContentModeScaleAspectFit


  通过保持纵横比来缩放内容以适合视图的大小。视图边界的所有剩余区域都是透明的。


UIViewContentModeScaleAspectFill


  缩放内容以填充视图的大小。内容的某些部分可能会被裁剪以填充视图的边界。

10-08 05:25