Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 中心及;纵横比匹配图像_Ios_Uiview_Uiimage - Fatal编程技术网

Ios 中心及;纵横比匹配图像

Ios 中心及;纵横比匹配图像,ios,uiview,uiimage,Ios,Uiview,Uiimage,目前我似乎无法同时设置两种内容模式。但我希望图像同时缩放和居中。我如何做到这一点 @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"

目前我似乎无法同时设置两种内容模式。但我希望图像同时缩放和居中。我如何做到这一点

@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时,会出现此图像:

如果将imageView设置为与其superview相同的帧,并且内容模式为
UIViewContentModeScaleSpectFit
,则应根据定义将其居中。祝你好运

它不居中的原因如下:

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

[self.windowOut addSubview:imageView];
只有当
windowOut
恰好位于(0/0)时,该选项才有效。
.frame
在其superview的坐标系中提供帧。如果
windowOut
位于,比如说它的superview(self.view?)中的(20/20),那么
imageView
将位于(40,40)

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

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

UIViewContentModeScaleAspectFit
是否仍将图像居中?是否由于某些奇怪的原因,图像向右移动了大约%10?您在哪里/何时分配图像?您是否检查了
self.windowOut.frame
是否符合预期?
UIViewContentModeScaleAspectFit
已在图像视图中缩放并居中。但是,如果你把图像视图放在一个奇怪的地方,那么它包含的图像当然也会出现在这个奇怪的地方。框架如我所料。我在故事板中设置了视图。你说什么奇怪的地方?我没有奇怪的地方只是好奇,你有没有试着不设置任何内容模式,换句话说,保留默认的内容模式?是的,我认为问题并不是因为它看起来的内容模式。我在之后添加了帧,现在我看到原始图像由于某种原因也有定心问题。我编辑了这篇博文,你的第三张图片只是在证明证据
UIViewContentModeScaleAspectFit
就可以了。您的代码非常适合模拟器,但当我在设备上测试时,它看起来像第三幅图像,但居中。可能是什么问题?当你观察到模拟器和设备之间的奇怪变化时,然后a)从模拟器中删除应用程序,b)从设备中删除应用程序,c)清理并重建。问题似乎更奇怪。下载或保存的图片显示正确。我的iphone相机拍摄的照片缩放不正确。可能是尺寸问题。相机照片比网站上的照片大,可能已经下载过。如果是大小,则选择不同的内容模式。