设置UIImageView的contentMode

时间:2014-06-08 17:57:23

标签: ios swift

在Obj-C

imageView.contentMode = UIViewContentModeScaleAspectFill;

会设置contentMode。

为什么

imageView.contentMode = UIViewContentModeScaleAspectFill

在Swift中不起作用?

5 个答案:

答案 0 :(得分:76)

有点令人困惑的是,Swift删除了ObjC枚举值的前缀:

imageView.contentMode = .scaleAspectFill

这是因为Swift已经知道正在使用什么枚举类型。或者,您也可以指定枚举:

imageView.contentMode = UIViewContentMode.scaleAspectFill

注意:在版本3之前的Swift版本中," scaleAspectFill"将需要资本化。

答案 1 :(得分:1)

在swift语言中,我们可以设置UIImage视图的内容模式,如

var newImgThumb : UIImageView
newImgThumb = UIImageView(frame:CGRectMake(0, 0, 100, 70))
newImgThumb.contentMode = .ScaleAspectFit 

答案 2 :(得分:1)

<强> tldr;

请参阅底部的Swift 3的代码答案。

注意 - 如果需要更多信息,请发表评论。

请查看以下较长的答案,其中包括如何使用该解决方案设置Storyboard或Xib / Nib文件中的所有其他属性。

其他答案没有错,但我想分享如何在Interface Builder中完成对象的设置值。我知道OP要求代码,这个例子只是为了完整而共享。当然,如果想要动画属性更改或需要代码版本,那么其他答案将继续适用。

在Interface Builder中

  1. 选择ImageView(或任何其他具有嵌入式控件的控件) imageView)
  2. 检查要设置的属性的基本类型(对于contentMode,这是UIViewContentMode)*请参阅NB以了解如何...
  3. 请注意可以分配给基本类型的有效值的类型(在此处         case contentMode值对应一个数字)
  4. 转到属性检查器,查看用户定义的运行时属性(参见图像)
  5. 添加用户定义的类型属性     数字以及您要设置的属性名称(在本例中为它)     将是 contentMode
  6. NB - 探索基础类型属性的简单方法是在源代码编辑器中单击Cmd +单击属性,然后单击Cmd +单击该属性的类型。

    这是一个简单的例子,我为UIButton设置了一些属性,其中包含一个UIImageView作为其子视图之一。该示例显示了如何在顶部对象(UIButton)和子对象(UIImageView)上设置属性。

    UDA

    如果选择了imageView,则只需将用户定义的运行时属性设置为Number类型的contentMode以及您想要的任何值。这是一个很好的方法,因为它适用于Objc和Swift。

    最棒的是,您可以使用相同的方法捕获Interface Builder中出现的任何内容的许多其他静态属性值。

    Documented values for the UIViewContentMode enum

    BTW - Swift 3将枚举值更改为以小写字母开头,以便以下内容适用于Swift 3:

    imageView.contentMode = .scaleAspectFill
    

答案 3 :(得分:1)

在Swift 4中是

imageView.contentMode = UIView.ContentMode.scaleAspectFit

答案 4 :(得分:-1)

在Swift语言中,我们可以在textField中设置imageView,如下所示。

auto w

为视图提供颜色&amp; imageView这样您就可以在textField中检查添加的imageView位置

#include <Eigen/Eigen>
#include <iostream>
using namespace Eigen;

template<typename T>
using Arr = Array<T, Dynamic, 1>;
template<typename T>
using Arr2 = Array<T, Dynamic, Dynamic>;

int main() {
  Arr<double> v = Arr<double>::LinSpaced(16, 0, 15);
  auto w = Map<Arr2<double>>(v.data(), 4, 4).transpose();
  std::cout << w << std::endl;
  return 0;
}