问题标签 [autoresizingmask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
67102 浏览

ios - 以编程方式自动调整掩码与 Interface Builder / xib / nib

我有一个(可能是错误的)假设,即在 xib 中启用右边距指示器等同于使用UIViewAutoresizingFlexibleLeftMargin内部代码等。

所以,我曾经根据这张快照思考过: 在此处输入图像描述

今天晚些时候,我不得不交叉检查,偶然发现了这个线程

还有苹果文档,标题为“使用自动调整规则自动处理布局更改”的部分:https ://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/创建视图.html

所以我现在有了一个新的概念,即以编程方式设置自动调整大小的掩码如何等同于 xib 设置:

场景1:仅设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)相当于:

(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)

在西布?

场景2(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)代码中的设置等价于:

(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)

在西布?

我的 2 个更新的场景是否正确?我现在在我的理解中吗?

0 投票
0 回答
2646 浏览

iphone - 为什么 layoutSubviews 在设置框架时不会自动在视图上调用?

我有一个看法。它是一个庞大而复杂的项目的一部分。设置我的视图框架后,不会自动调用 layoutSubviews。

玩弄这个,我尝试将以下方法放入我的视图中:

在这一点上,正如预期的那样,在设置框架时重做布局。如果我注释掉 setNeedsLayout 行,布局就没有完成。此外,当我在调用 super 的那一行单击“进入”时,调试器不会进入任何内容。据我所知,super 的 setFrame 方法没有被覆盖。

FWIW,我还做了一个小测试项目,在其中更改了视图的框架。在这种情况下,当我这样做时调用了 layoutSubviews。[我的测试项目中没有调用setNeedsLayout。]所以我的大项目中的某些东西正在改变行为。但我不知道那是什么东西。

谁能解释可能发生的事情?

编辑:澄清一下,我的框架变化正在改变视图的高度。宽度没有改变。

0 投票
1 回答
501 浏览

iphone - 将 NavigationBarHidden 设置为 NO 不会正确调整视图的大小 iPhone/ipad

我有一个简单的问题,真的让我发疯。
我有一个导航控制器,根视图控制器是一个 VC,它有一个视图,应该在不显示导航栏的情况下呈现。为了实现这一点,我在 rootVC 内部的方法中将bar的navigationBarHidden属性设置为。navigationControllerYES-viewWillAppear:

为了再次显示它,我在-viewWillDisappear:rootVC 的方法中将相同的属性设置为 NO。

如果我向视图询问其 frame.size,它将正确回答 320 宽度和 460 高度。当我推动另一个视图(我可以看到导航栏出现)时,如果我询问视​​图的大小,它说我是 320x460,这个错误应该告诉我类似 320x416 的信息。
如果我现在推送另一个视图并询问它的大小,我会得到正确的大小 320x416。如果现在我弹出按回,我会再次获得正确的尺寸。
事实是导航栏与“中间”视图重叠了 44 个点,除了硬编码它的大小并且我不想要之外,我无法将其设置为正确的大小。
IB 阻止了视图自动调整掩码,因为它是文件的所有者之一。状态栏样式是不透明的。
你对我有什么提示吗?
THX,安德里亚

0 投票
1 回答
8058 浏览

objective-c - 自动调整大小的蒙版如何工作?

我找到了很多关于自动调整大小的信息,但没有一个能够解决我的问题。我有一个 ViewController (RAViewController),它在其 loadView 方法中调用一个视图,如下所示:

它调用的视图 (RAView) 如下所示:

由于某种原因,当设备为横向时,我无法获得自动调整大小的掩码来调整按钮宽度。任何帮助是极大的赞赏。

0 投票
0 回答
393 浏览

iphone - autoresizingMask 没有正确响应

我已经非常成功地在我的项目的所有视图中实现了自动调整掩码。但是在最后一个,即设置中,tableCells 中有很多滑块,似乎效果不太好。:

在此处输入图像描述

我确定我已经正确实施了

滑块和标签的灵活左边距。

当旋转发生时,我还实现了表重新加载。

单元格可以重复使用,或者至少在纵向模式下它们可以工作,但是当我旋转并返回时,我得到了你在图片中看到的内容。

关于我缺少什么的任何想法?

提前谢谢!

0 投票
1 回答
312 浏览

ios - 固定两个方向上的对象之间的空间

我正在使用 AutoresizingMask 以编程方式定义相对位置。我得到了几乎所有的工作,但我不知道如何在两个元素之间保持相同的分隔(UIButton,UILabel 由 20px 分隔)这就是我所拥有的:

UIButton , 定位在 (100, 100), 大小: 60x30, autoresizingMask=UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin

UILabel,定位在 (180,100),大小:50x50,autoresizingMask=UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin

我的问题是,当方向改变时,我无法在这两个元素之间保持 20px 的边距。

0 投票
1 回答
558 浏览

ios - 如何设置我的 UITableViewCell 子类的子视图以使用自动调整大小的蒙版?

我正在尝试为我的 iOS 应用程序实现一个网格(想想 .NET 的 DataGridView)。我正在使用带有自定义 UITableViewCell 子类的 UITableView,其中我有几个标签代表该行的每一列数据。我的问题与在设备方向更改后调整这些标签的宽度有关。我基本上想按比例调整它们的大小,例如,在纵向占据网格宽度 1/3 的列在切换到横向时仍将占据宽度的 1/3。

现在我通过覆盖- (void)layoutSubviews我的 UITableViewCell 子类的方法来实现这一点;我基本上只是硬编码 iPad 和 iPhone 横向与纵向的比例。但是,这仅在网格本身根据方向更改按比例调整大小时才有效,当然并非总是如此。

为了实现在任何情况下都可以使用的解决方案,我考虑过self.bounds.size.width在 layoutSubviews 方法中使用,但似乎自动调整掩码是更好的解决方案。如果我将每个 UILabel 的掩码设置为,UIViewAutoResizingFlexibleWidth | UIViewAutoResizingFlexibleLeftMargin | UIViewAutoResizingFlexibleRightMargin那么我应该实现我正在寻找的缩放类型。但是,我想不通的是如何设置每个标签的初始帧。如果在调用 layoutSubviews 之前我不知道单元格的起始边界,我该如何安排我的子视图开始?

0 投票
2 回答
8331 浏览

iphone - UITableViewCell autoresizingmask issue

I have 3 UI elements in the contentView of the UITableViewCell that need to be aligned properly when the device rotates. Currently, I enforce the frames of these UI Elements like this:

I would like to know how I can use the autoresizingMask property of these elements to make them resize and not-overlap on one another when the device is rotated from Landscape to portrait (default is portrait, iPad only). I do not want to have custom frame positions for each orientation.

I tried something like this:

But this doesn't seem to work. The elements are all overlapped and unhappily laid out.

Any suggestions?

UPDATE 1

Here's what the table view cell currently looks like in landscape mode:

And here's what I want when the device is rotated to a portrait mode:

UPDATE 2 Here's my code in cellForRowAtIndexPath incorporating suggestions from @Wolfert

0 投票
1 回答
570 浏览

ios5 - iOS 5 Autoresizingmask 问题

我在使用 Xcode Interface Builder(最后一个可用版本)和他的用于 iPad 应用程序的 Autoresizing Mask 时遇到了问题。

我有这些视图,哪些框架都是通过 IB 设置的,因为我想编写尽可能少的代码:

  • BannerAnteprime(UIScrollView),x:0,y:0,宽度:768,高度:480。
  • CentralToolbar (UIToolbar), x: 0, y: 480, width: 768, height: 44 (默认不可编辑)
  • BannerVideo(UIScrollView),x:0,y:522,宽度:768,高度:480。

应用程序支持旋转,所以当用户旋转到横向或纵向时,我希望视图自动调整大小,但是,无论我做什么,我都没有得到希望的结果,我已经打印了用户旋转设备时的框架,这就是我得到的:

如您所见,尺寸和位置有问题。滚动视图的掩码配置为:

http://www.issamtp.org/ScrollViews.png

而对于工具栏:

http://www.issamtp.org/Toolbar.png

这些使我得到了我能得到的最正确的结果,即:

http://www.issamtp.org/portrait.png肖像和:


(来源:issamtp.org
景观。

我哪里错了?

0 投票
2 回答
726 浏览

objective-c - 在桌面项目上使用 autosizing 或 autoresizingMask 不好吗?

作为一个有点熟练的 iOS 开发人员,我刚刚开始在 Cocoa 中开发一个桌面 OSX 项目,我遇到了一些我无法理解的问题。所以这个问题是针对 OSX 开发人员的。

我不太喜欢 Interface Builder,所以我倾向于用代码编写我的视图。我编写视图布局代码的最突出的方法是视图控制器的loadView方法,至少在 iOS 上,我对所有内容都使用autoresizingMasks。尝试小视图、大视图、旋转横向和纵向视图,如果一切都很好,我将继续列表中的下一个项目。现在在桌面上,autoresizingMask作品(或只是看起来)有点不同。首先,属性有不同的名称,但它们的行为似乎也很奇怪或出乎意料。

当我遇到下面的问题时,我认为这一定是我的代码错了,所以在尝试了足够长的时间后,为了确认,我用 Interface Builder 重新创建了它,你猜怎么着:我得到了完全相同的结果。使用四个垂直堆叠的子视图进行视图。将中间的两个设置为具有灵活的高度,外部的要固定。当您运行它时,将其缩小并再次备份,我在调整大小之前和之后得到两个完全不同的布局。见图片:

在此处输入图像描述

现在我可以从运行循环之间的数学角度理解为什么会发生这种情况,但是从“自动调整大小”或“自动调整大小”功能的角度来看,这绝对没有意义。

在我尝试在这里写出所有调整大小的主题之前,我可以问你这些问题吗?如果您觉得它添加到帖子中,请随意详细说明调整大小的主题。

  1. 难道我不想在桌面项目上使用 Interface Builder 是个傻瓜吗?
  2. autoresizingMask我应该比iOS项目依赖更少吗?
  3. 在没有 Interface Builder 的情况下,确保您的布局符合标准有哪些不错的替代方案?

干杯!