情况就是这样:我有一个VC里面有一个自定义UIView。此自定义UIView有一个.xib文件,其中包含2个UIImageViews。我试图通过使用AutoLayout让这两个UIImageViews在不同的屏幕尺寸上缩放到相同的大小。但是,当我启动我的应用程序时,我的自定义UIView中的图像超出了自定义UIView的超级视图(这是VC)容器大小的范围。请帮忙。这里有一些图片可以更详细地解释这个问题。
自定义UIView中的代码: @implementation CustomTwoImagesSelectedUIView
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self load];
}
return self;
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self load];
}
return self;
}
- (void)load {
[[NSBundle mainBundle] loadNibNamed:@"CustomTwoImagesSelectedUIView" owner:self options:nil];
self.lastImageView.layer.cornerRadius = 5.0f;
self.lastImageView.clipsToBounds = YES;
self.secondToLastImageView.layer.cornerRadius = 5.0f;
self.secondToLastImageView.clipsToBounds = YES;
[self addSubview:self.twoImagesSelectedView];
}
答案 0 :(得分:0)
您已设置了图像视图的cliptobounds属性,但我认为图像视图本身的界限设置不正确。您需要在.xib文件中仔细设置图像视图的布局约束。也。将customImageViews添加到某个视图控制器或superview时。您还需要针对其superview设置customImageViews的布局约束。
答案 1 :(得分:0)
我在自定义UIView中尝试了AutoLayout,但它也无法正常工作。我认为这是Xcode的一个错误,我终于找到了这篇文章:Create an IBDesignable UIView subclass with code from an XIB file in Xcode 6
在文章中,我发现它使用autoresizingMask而不是AutoLayout。这是修复UI显示问题的好方法。我希望它可以帮助你。
- (void)load {
[[NSBundle mainBundle] loadNibNamed:@"CustomTwoImagesSelectedUIView" owner:self options:nil];
self.lastImageView.layer.cornerRadius = 5.0f;
self.lastImageView.clipsToBounds = YES;
self.secondToLastImageView.layer.cornerRadius = 5.0f;
self.secondToLastImageView.clipsToBounds = YES;
[self addSubview:self.twoImagesSelectedView];
self.twoImagesSelectedView.frame = self.bounds;
self.twoImagesSelectedView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}