在界面生成器中,按住Command+=将调整按钮大小以适应其文本.我想知道是否可以在将按钮添加到视图之前以编程方式完成此操作.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button.titleLabel setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
// I need to know the width needed to accomodate NSStringVariable
[button setTitle:NSStringVariable forState:UIControlStateNormal]; 
// So that I can set the width property of the button before addSubview
[button setFrame:CGRectMake(10, 0, width, fixedHeight)];
[subNavigation addSubview:button];

推荐答案

在Xcode4.5和更高版本中,现在可以使用‘Auto-layouting / Constraints’来完成此操作.

主要优势在于:

  1. 你根本不需要通过编程来设置框架!
  2. 如果操作正确,您不需要为方向更改而费心重置框架.
  3. 此外,设备更改不需要麻烦您(阅读,不需要为不同的屏幕大小单独编码).

有几个缺点:

  1. 不向后兼容-仅适用于iOS 6及更高版本.
  2. 需要熟悉(但可以节省以后的时间).

最酷的是,我们可以集中精力声明一个意图,例如:

  • 我希望这两个按钮的宽度相同;或
  • 我需要这个视图垂直居中,并从SuperView的边缘延伸到最大10点;或者甚至,
  • 我想让这个按钮/标签根据它显示的标签调整大小!

Here是介绍自动布局的简单教程.

more details分.

一开始需要一些时间,但看起来肯定是值得的.

Ios相关问答推荐

自定义组件中的通用型-无法访问特定于收件箱的属性

将图案UI视图动画化以模拟进度条

RN 0.63支持iOS ProMotion?

如何使视图完全适合屏幕,而不会在旋转时溢出手机屏幕的边界?

拖动手势导致 sim 崩溃 Swift UI

在 React Native iOS 中加载多个 JS 包

长按 SwiftUI 更改项目的顺序

一对多关系 Firebase 实时数据库(嵌入数百万条 comments )

在 SwiftUI 中将 TextEditor 文本计数连接到 ProgressView

快速禁用 UITextfield 的用户输入

在 Swift 中按下返回键时在文本字段之间切换

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

Watchkit AppIcon - 名为AppIcon的应用图标集没有任何适用的内容

检测 iOS UIDevice 方向

应用程序不包含正确的测试版权利

SwiftUI - 列表行中的多个按钮

iOS7 UITextView contentsize.height 替代

如何关闭 iOS 键盘?

使用 swift 3 在 UIView 上添加阴影

/usr/bin/codedesign 失败,退出代码为 1