繁体   English   中英

如何确保UIView缩小到其超级视图的大小?

[英]How do you ensure that a UIView shrinks down to the size of its superview?

我正在创建一个自定义视图(UIView的子类),其目的是将静态背景图像,静态边框/框架覆盖图以及几个可以在视图周围旋转,拉伸和拖动的较小图像组合在一起(在将整个视图导出为图像之前)。

我被困在从另一个视图中显示此自定义视图。 这些图像来自具有高分辨率的iPhone相机,到目前为止,我唯一能做的就是截取大部分图像或将我的视线移到屏幕的末端。 我需要能够在菜单项等旁边显示它,而无需编辑图像(以便可以完整格式发送图像)。

我还将图像添加到全屏视图,并且它仍然不会改变大小。

我正在如下初始化视图

- (id)initWithImage:(UIImage *)image
{
    self = [super init];
    if (self) {
        [self setClipsToBounds:YES];
        [self setAutoresizesSubviews:YES];
        [self setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

        _image = image;
        _imageView = [[UIImageView alloc] initWithImage:_image];
        [_imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
        [self addSubview:_imageView];
    }
    return self;
}

我将其添加到另一个视图

self.card = [[SGImageCard alloc] initWithImage:[SGCardDataController cardImage]];
[self.cardPlaceHolder setAutoresizesSubviews:YES];
[self.cardPlaceHolder setContentMode:UIViewContentModeScaleAspectFit];
[self.cardPlaceHolder addSubview:self.card];

该视图也已在Interface Builder中设置,并在那里设置为自动调整其子视图的大小和Cliptobounds(有时,我已经尝试过两种方法)。 我已经在viewdidload中添加了我的视图(当占位符没有框架,由于我不知道的原因),后来又添加了它(无论哪种方式都不起作用)。

我想念什么? (我是否已经以正确的方式解决了这个问题?)

我终于通过将AutoResizeMasks设置为

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleRightMargin | UIViewAutoResizingFlexibleBottomMargin

并将ContentModes设置为

UIViewContentModeScaleAspectFit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM