【问题标题】:How do you ensure that a UIView shrinks down to the size of its superview?您如何确保 UIView 缩小到其父视图的大小?
【发布时间】:2013-02-07 16:37:23
【问题描述】:

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

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

【问题讨论】:

    标签: iphone ios uiview subviews


    【解决方案1】:

    我终于通过将 AutoResizeMasks 设置为来解决了这个问题

    UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight |
    UIViewAutoresizingFlexibleRightMargin | UIViewAutoResizingFlexibleBottomMargin
    

    并将 ContentModes 设置为

    UIViewContentModeScaleAspectFit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多