中心和Aspect Fit Image

时间:2014-04-14 17:08:29

标签: ios uiview uiimage

目前我无法在同一时间设置2种内容模式。但我希望图像既缩放又集中。我该如何做到这一点?

@property (weak, nonatomic) IBOutlet UIView *windowOut;

self.windowOut.layer.borderColor = [UIColor redColor].CGColor;
self.windowOut.layer.borderWidth = 3.0f;

UIImage *face = [UIImage imageNamed:@"face.png"];

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.contentMode = UIViewContentModeCenter;

[imageView setImage:face];
[self.windowOut addSubview:imageView];

此图片是上述代码的结果: enter image description here

此图像是“imageView.contentMode = UIViewContentModeCenter; “被评论出来: enter image description here

编辑: 这个图像是我注释掉两个contentModes时的结果: enter image description here

2 个答案:

答案 0 :(得分:2)

它没有居中的原因在于:

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame];

[self.windowOut addSubview:imageView];

仅当windowOut碰巧位于(0/0)时才有效。 .frame在其superview的坐标系中给出了框架。如果找到windowOut,请在其超级视图(self.view?)中说(20/20),然后imageView将位于(40,40)

请改用bounds。这是相同的,但在其自己的坐标系内。

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.bounds];
[self.windowOut addSubview:imageView];

答案 1 :(得分:0)

如果imageView设置为与其超级视图相同的帧,并且内容模式为UIViewContentModeScaleAspectFit,则它应按照定义居中。祝你好运!