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

时间:2013-02-07 16:37:23

标签: iphone ios uiview subviews

我正在创建一个自定义视图(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中添加了我的视图(当占位符没有它的框架时,由于我不知道的原因),以及稍后,当它发生时(并且它不起作用)。

我错过了什么? (我是否以正确的方式解决了这个问题?)

1 个答案:

答案 0 :(得分:0)

我终于通过将AutoResizeMasks设置为

来解决了这个问题
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleRightMargin | UIViewAutoResizingFlexibleBottomMargin

并将ContentModes设置为

UIViewContentModeScaleAspectFit