自动布局,无需使用 Storyboards 或 Interface Builder

2023-12-11

我正在构建一个应用程序,我想完全避免使用 Storyboard 和 Interface Builder,因此所有 UI 都应该在代码中指定。我在用纯布局,一个很好的配置 APIAutoLayout限制。

然而,我的问题是,它看起来像AutoLayout不使用 Interface Builder 时被禁用。updateViewConstraints,我根据给出的建议放置布局的方法PureLayout作者,根本不叫。

只是为了提供有关我的设置的更多信息:

  • deleted Main.storyboard并从我的中删除了该条目Info.plist
  • 手动设置self.window in AppDelegate.m并添加了UINavigationController with MainMainController as rootViewController

如前所述,我的主要问题是updateViewConstraints没有被叫到MainViewController但 UI 元素全部显示为frame我在初始化期间传递给他们的。

Note:在我看来,我只需要在某处启用一些标志来模仿 Interface Builder 中的复选框,您可以使用它来指示是否要使用AutoLayout.

enter image description here

MainViewController.m

@interface MainViewController ()

@property (nonatomic, strong) UIButton *startButton;
@property (nonatomic, assign) BOOL didSetupConstraints;

@end

@implementation MainViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.view addSubview:self.startButton];
    [self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
}

- (UIButton *)startButton
{
    if (!_startButton) {
        UIButton *startButton = [UIButton buttonWithType:UIButtonTypeSystem];
        CGRect startButtonFrame = CGRectMake(75.0, 75.0, 250.0, 44.0);
        startButton.frame = startButtonFrame;
        [startButton setTitle:@"Start" forState:UIControlStateNormal];
        [startButton setTranslatesAutoresizingMaskIntoConstraints:NO];
        _startButton = startButton;
    }
    return _startButton;
}

- (void)updateViewConstraints
{
    NSLog(@"Update view contraints");
    if (!self.didSetupConstraints) {
        [self.startButton autoCenterInSuperview];
        self.didSetupConstraints = YES;
    }
    [super updateViewConstraints];
}

@end

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动布局,无需使用 Storyboards 或 Interface Builder 的相关文章

  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后
  • 当 isUserInteractionEnabled false 时,SKSpriteNode 不会让触摸通过

    我正在尝试在 SpriteKit 中创建一个覆盖层 方法是使用SKSpriteNode 但是 我希望触摸穿过覆盖层 所以我设置isUserInteractionEnabled为假 然而 当我这样做时 SKSpriteNode似乎仍然吸收所有
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 如何检测用户是否第一次打开应用程序[重复]

    这个问题在这里已经有答案了 是否可以检测用户是否是第一次打开iOS应用程序 使用Objective C 我想在用户第一次打开应用程序时显示欢迎消息 但之后不再向他们显示 我正在寻找类似的东西 BOOL firstTime AppDelega
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • UIViewController 不旋转到横向

    在许多情况下需要旋转控制器但不起作用 现在我遇到了相反的问题 它正在旋转 我想禁用它 在那个 ViewController 中我有这个 BOOL shouldAutorotateToInterfaceOrientation UIInterf
  • 将类型传递给通用 Swift 扩展,或者理想情况下推断它

    说你有 class Fancy UIView 你想找到所有兄弟姐妹Fancy意见 没问题 https stackoverflow com q 37232743 294884 for v UIView in superview subview
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • UICollectionView setLayout:animated: 不保留 zIndex

    我注意到打电话时setLayout animated in a UICollectionView要在两个布局之间切换 当前可见的单元格不遵循zIndex它的布局属性已设置在layoutAttributesForItemAtIndexPath
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换

随机推荐

  • 不允许我将外键添加到 SQL Server 中的表中

    我正在整理数据库并尝试对所有依赖项进行排序 但在将外键添加到表中时不断遇到错误 我已经检查了限制 但似乎找不到任何限制 所以我只是想知道问题出在哪里 患者 表已成功保存 预约 表 无法创建关系 FK Appointments PATIENT
  • ListView 自动调整大小以显示所有项目

    我想要创建的是一个列表视图 它将调整自身大小以显示所有项目 通常我会使用 AutoSize 但这在这里不起作用 还有其他选项如何使 ListView 扩展和收缩以适应所有情况 您必须手动计算所需的高度 并在添加 删除项目时进行设置 不直接支
  • magento 中的 Ajax(加载产品视图块)

    我想要实现的目标 单击产品链接 图像 至少在某些区域 可打开一个弹出窗口 其中包含完整的产品信息 基本上是产品视图页面的所有内容 到目前为止我所做的 尝试过的 创建了 ajax php 代码之外的所有内容 模块 链接 模板 重写 创建了 a
  • 将数据帧列表传递给 lm() 并查看结果

    我有三个数据帧 dfLON dfMOS 和 dfATA 每个都有相同的变量 y是连续变量 a b和c是二元分类变量 还有一些NA 我想建立单独的线性回归模型 每个数据集一个 使用我当前的代码 我已成功创建数据帧列表并将其传递到 lm 中 但
  • 测试时管道损坏(写入失败)> 允许的最大内容长度[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个测试来验证我的服务器拒绝大于 1MB 的请求 Scenario large requests are rejected Given url https my server com anythin
  • 添加带有材质表的组件会更改 Material-UI AppBar 样式

    我的应用程序正在使用 Material UI 和材料表 使用 ThemeProvider 作为子项在 index js 文件中应用全局主题 然后再有子项
  • 将 int 传递给函数,然后使用该 int 创建数组

    我正在尝试为我的 openGL 项目创建一个textureLoader 类 但无法在类构造函数内初始化纹理数组 因为该数组不会接受任何内容 除非它是 const int 给你画一幅简单的图画 myFunction NUM GLuint te
  • Laravel:使用 try...catch 和 DB::transaction()

    我们都用DB transaction 对于多个插入查询 这样做时 应该try catch放在里面还是包裹起来 是否还需要包括一个try catch如果出现问题 交易什么时候会自动失败 Sample try catch包装交易 try cat
  • HTML 画布悬停文本

    我有一个 HTML 画布 其中包含所有不同大小的不同形状 它是通过解析外部文件中的信息来构建的 我想知道如何制作 以便将鼠标悬停在每个形状上都会显示其唯一的名称 我找到了有关如何在鼠标悬停时显示文本的资源whole画布 但我需要每个单独的形
  • 以编程方式推广 QWidget

    我有一个 ui 文件 其中包含QProgressBar in a QWidget 此外 我创建了继承自的自定义进度条组件QProgressBar 在QT Designer中 我可以推广QProgressBar小部件到我的自定义小部件 有没有
  • 计算数组中的重复项[重复]

    这个问题在这里已经有答案了 我正在尝试显示数组的内容 但如果存在重复项 则仅打印名称和数字 例如 myArr apple apple orange apple banana orange pineapple 会显示 apple 3 oran
  • 无法使用 TesseractOCRConfig Apache Tika 提取扫描的 pdf

    我的 pdf 包含扫描图像 我想从中提取文本 我尝试过的 我尝试使用 AutoDetectParser 但没有输出 我按照中提供的解决方案进行操作Apache Tika 提取扫描的 PDF 文件还有 Apache Tika Jira 位于h
  • 使用 python 脚本发送嵌入图像的 html 电子邮件

    我是Python新手 我想发送基于 html 的电子邮件 并在电子邮件正文的左上角嵌入公司徽标 使用以下代码 电子邮件绝对可以正常工作 但不再附加嵌入的图像 不知道我哪里做错了 任何人都可以帮我吗 import smtplib from e
  • 在Python中读取文件并将值存储到变量中

    假设我有一个文件名 test txt 其中包含以下数据 AA11 BB11 CC11 DD11 AA22 BB22 CC22 DD22 AA33 BB44 CC44 DD33 在 bash shell 脚本 中我可以执行以下操作 cat t
  • 在以下任何来源中均未找到 Bumblebee Android studio 插件 [id: 'com.android.application', 版本: '7.1.0', apply: false]:

    我将我的 android studio 从 Android studio Fox 更新为 Android studio Bumblebee 2021 1 1 但我的项目都不能运行Android 工作室大黄蜂 2021 1 1 我最终得到了这
  • 使用 CSS 实现内部文本阴影

    我目前正在使用 CSS3 并尝试实现这样的文本效果 黑色模糊的内部阴影 但我找不到创建文本阴影的方法inside文本 我想知道这是否仍然可能 因为 box shadow 元素能够像这样在内部渲染阴影 box shadow inset 0px
  • Google 云存储签名 URL 上传 + Dropzone.js

    我正在尝试使用 Dropzone js 使用签名 URL 直接上传到 Google Cloud Storage 我已经设法覆盖添加到 Dropzone 的每个文件的上传 URL Chrome 开发工具说PUT请求正在发生 但我不可避免地收到
  • SOCKS5 连接超时 (GCDAsyncSocket)。 (OpenFire、XEP-0065 和 iOS XMPPFramework)

    Problem 我正在尝试使用 iOS XMPPFramework 和 OpenFire 服务器进行 TURNSocket XEP 0065 SOCKS5 我希望能够发送和接收文件 然而 在大多数情况下 接收方不会返回任何响应 我目前怀疑问
  • 如何在手机上点击网页链接时触发电话

    我需要为移动设备构建一个网页 只有一件事我还没弄清楚 如何通过点击文字来触发电话 有没有我可以输入的特殊网址 例如mailto 电子邮件标签 设备特定的解决方案不是首选 我知道 iPhone 会自动识别电话号码并为此创建一个链接 但如果也可
  • 自动布局,无需使用 Storyboards 或 Interface Builder

    我正在构建一个应用程序 我想完全避免使用 Storyboard 和 Interface Builder 因此所有 UI 都应该在代码中指定 我在用纯布局 一个很好的配置 APIAutoLayout限制 然而 我的问题是 它看起来像AutoL