bdv*_*bdv 1 cocoa-touch objective-c uiimageview ios
我有一个UIImageView
全屏显示为“背景”的图片。每当我将图片设置viewdidload
为默认设置时,它的contentMode
效果都很好。
但是,当我这样做时:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.pickedPhotoImageView.contentMode = UIViewContentModeScaleAspectFit; // set desired contentMode here
self.pickedPhotoImageView.clipsToBounds = YES;
self.pickedPhoto = image;
[self.pickedPhotoImageView setImage:image];
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
contentMode
失去对照片的所有尊重,并且在拍摄照片时仅显示照片的一小部分。像这样,UIImageView如何失去对属性的尊重?
确保UIImageView
正确设置了约束。使用自动版式时,每个视图的大小由视图的intrinsicContentSize
(链接)确定。这意味着当您重置的子类的内容时UIView
(无论是中的文本,UILabel
还是在这种情况下,中的图像UIImageView
,自动布局都会计算新的大小。如果您没有设置适当的约束并设置内容,如果尺寸大于当前框架的尺寸,则框架将增大。
至于为什么会发生这种情况,即使您设置了contentMode
和clipsToBounds
,也contentMode
似乎是在事实之后完成的,并且将在高度和宽度的约束下工作(您给定的高度和宽度,或者根据相对高度计算出的高度和宽度)对X和Y的约束)。clipsToBounds
以相同的方式工作,在计算布局后,它将裁剪框架范围之外的所有内容。在这种情况下,计算出的布局被认为比屏幕大,并UIImageView
据此设置边框,这就是为什么您只看到照片的一小部分的原因。
希望这种解释有所帮助!
归档时间: |
|
查看次数: |
1071 次 |
最近记录: |