【问题标题】:Autoresize mask - pin top left corner of UIImageView自动调整掩码 - 固定 UIImageView 的左上角
【发布时间】:2013-08-07 09:52:19
【问题描述】:

X 是一个图像视图,带有父 UIScrollView。 X 内容模式设置为Aspect Fit

4 英寸

______
|    |
|    | 
|X   |
|____|

当我在 4 英寸和 3.5 英寸显示器之间切换时,我希望 X 固定在左上角。因此,据我了解,我尝试将 autoresize 掩码设置如下:

现在发生的事情是,X 被推到了更多的中心。我认为这是因为 Aspect Fit 试图保持比率。

3.5 英寸

______
|    |
| X  | 
|____|

有可能实现吗?

在 cmets 之后编辑

在 Storyboard/Interface Builder 中,VC 自定义类设置为 ContactVC,它是 UIViewController 的子类。它有一个 UIScrollview 和一个在 IB 中创建的 UIImageView 子视图,如上所述。 .在我的ContactVC.m 中,我覆盖了didLayoutSubviewslayoutSubviews,但它们没有被调用。

@implementation ContactViewController

-(void) viewDidLayoutSubviews {
    UIViewAutoresizing mask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [someImageView setAutoresizingMask:mask];
}

-(void) viewLayoutSubviews {
    UIViewAutoresizing mask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [someImageView setAutoresizingMask:mask];
}

【问题讨论】:

    标签: ios objective-c uiview storyboard autoresizingmask


    【解决方案1】:

    在使用 xib 中的自动调整大小掩码创建视图之后,您的自动调整大小掩码似乎稍后会被覆盖。

    尝试在layoutSubviews 中设置您的自动调整掩码,或者在视图控制器的viewDidLayoutSubviews 中设置。

    【讨论】:

    • 一切都在 Interface Builder 中完成。但是,我在 viewDidLoad 中尝试使用此掩码,但没有成功: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin;
    • 我试过没有用。调试器也不会进入任何方法。
    • 您实际上对滚动视图进行了子类化?如果没有,您是如何“尝试”覆盖layoutSubviews 的?如果不调用这些方法,则存在严重缺陷......
    • 它是 UIViewController 的子类。我已经更新了我的问题并提供了进一步的解释。
    • 我得出的结论是,如果内容模式设置为 Aspect Fit,这是不可能的。 developer.apple.com/library/ios/documentation/WindowsViews/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多