使用 Interface Builder 和代码自动调整大小?

发布于 2024-09-16 08:42:51 字数 589 浏览 13 评论 0原文

我想在 iPhone 中使用自动调整大小蒙版来调整横向和纵向模式下的视图。问题是当我从界面生成器应用宽度弹簧时,按钮按比例更改其大小。但是,当我通过代码应用相同的弹簧时,即

 [self.view setAutoresizesSubviews:YES]; 
 [testButton setAutoresizingMask:UIViewAutoresizingNone];
 [testButton setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

按钮不会显示相同的行为。

自动调整大小应用在界面生成器的按钮上: 原始按钮尺寸:120宽37高 横向模式按钮:按比例更改大小

自动调整大小应用在代码上的按钮上:
原始按钮尺寸:宽度120,高度37
横向模式按钮:通过在纵向和横向模式下保持相同的左右边距来更改大小。

从代码应用的掩码似乎无法正常工作,因为从代码创建的按钮的大小变得更大。

我的视图很复杂,这就是为什么我不想在视图上设置每个子视图的框架。

有同样问题的人!!!

I want to use auto resizing mask in iPhone to adjust view in landscape and portrait mode. The problem is when I apply width spring from Interface builder, the button changes its size proportionally. But when I apply the same spring by code i.e.

 [self.view setAutoresizesSubviews:YES]; 
 [testButton setAutoresizingMask:UIViewAutoresizingNone];
 [testButton setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

the button doesn't show the same behavior.

Auto resizing applied on button from Interface builder:
original button size: 120 width and 37 height
landscape mode button: changes size proportionally

Auto resizing applied on button from Code:
original button size: 120 width and 37 height
landscape mode button: changes size by keeping same left and right margins in both Portrait and landscape mode.

The mask applied from code doesn't seem to work correctly as the size of button created from code comes out to be greater.

My views are complex that is why i don't want to set the frames of each subview on the View.

Anyone with same issue!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紫瑟鸿黎 2024-09-23 08:42:51

感谢各位的回复,顺便说一句,我已经解决了我的问题。与界面生成器的链接无关。实际上,在没有界面生成器的情况下创建视图时,如果您希望子视图自动调整大小;您必须使用按位 OR 连接器将弹簧和支柱设置在一行中。我用于调整视图大小的代码是:

[appLogo setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];

Thnx for responding guys, by the way I have solved my issue. There was nothing to do with the link with the interface builder. Actually while creating your view without interface builder, if you want the subviews to be auto re-sized; You have to set springs and struts in a single line using the bitwise OR connector. The code I used for re-sizing my view is:

[appLogo setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
风吹短裙飘 2024-09-23 08:42:51

检查 2 件事。
1、IBOutlet的连接
2. 另请检查您是否已创建已创建的视图的 IBOutlet 的 @property。

希望这能解决这个问题。

Check 2 things.
1. Connection of IBOutlet
2. Also check that you have created the @property of the IBOutlet of view you have created.

Hope this solve the issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文