目前我无法在同一时间设置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];
此图片是上述代码的结果:
此图像是“imageView.contentMode = UIViewContentModeCenter; “被评论出来:
编辑: 这个图像是我注释掉两个contentModes时的结果:
答案 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
,则它应按照定义居中。祝你好运!