Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在哪里创建自定义UI元素?_Ios_Xcode_User Interface - Fatal编程技术网

Ios 在哪里创建自定义UI元素?

Ios 在哪里创建自定义UI元素?,ios,xcode,user-interface,Ios,Xcode,User Interface,一个想要成为iOS开发者的快速问题。我想为没有界面生成器的iPhone应用程序创建一个UI,仅以编程方式。但是,我希望坚持MVC建议,将V和C分开,并拥有清晰可读的代码,因此: 我创建UIView类文件(e.x.SplashView.h和SplashView.m) 我创建UIViewController类文件(SplashViewController.h和SplashViewController.m) 我在UIView类文件中定义我的UI元素(视图、子视图、按钮和文本字段) 我在视图控制器的l

一个想要成为iOS开发者的快速问题。我想为没有界面生成器的iPhone应用程序创建一个UI,仅以编程方式。但是,我希望坚持MVC建议,将V和C分开,并拥有清晰可读的代码,因此:

  • 我创建UIView类文件(e.x.SplashView.h和SplashView.m)
  • 我创建UIViewController类文件(SplashViewController.h和SplashViewController.m)
  • 我在UIView类文件中定义我的UI元素(视图、子视图、按钮和文本字段)
  • 我在视图控制器的loadView方法中加载主视图,然后在视图控制器的viewDidLoad方法中执行其他操作
这是一个正确的方法吗

问题的第二部分,独立于对第一部分的回答。我在哪里定义这些自定义UI元素? -在视图的initWithFrame:方法中? -在单独的(属性getter?属性setter?)方法中?也就是说,我是否必须首先在.h文件中将每个UI元素声明为属性


如果这些问题听起来有点无知,那一定是因为它们是:)我在StackOverflow上找到了很多示例代码,但很少指出您实际将其放在了哪里。我将非常感谢您的帮助,尤其是如果您可以粘贴/引用一些相关代码。

转到;下载与您的目标类似的应用程序的所有内容。

您的列表是正确的。这就是我做所有应用的方式。没有界面生成器,只有代码

每个自定义视图通常在适当的
initXXX
方法中创建自己的子视图。这可以是
initWithFrame:
,但您可以根据需要定义其他。子视图布局可以通过约束、自动调整掩码大小或通过实现
layoutSubview
来完成

每个视图控制器将在
viewDidLoad
中实例化其所需的视图。视图布局可以通过约束、自动调整遮罩大小或通过实现
viewWillLayoutSubviews
来完成


属性的使用是完全可选的。为要从外部类设置/获取的任何内容创建公共属性。可以选择为实现内部的值创建私有属性。

为什么要考虑在Xcode之外执行此操作?许可?成本?开发环境?Xcode的培训材料太多了,作为一名初学者,你的工作变得更加困难了。@GoZoner哪里说这是在Xcode之外完成的?OP表示他们不想使用界面生成器。以编程方式构建UI而不是使用IB没有什么特别的错误,就像到处骑自行车而不是开车一样。无论哪种方式,你都可以到达目的地,但大多数人会说这辆车速度更快,工作量更少。你有没有特别的理由避免IB,或者它看起来太神秘了?(我不是在批评那些不使用IB的人,但在你决定不使用IB之前,尤其是作为一个初学者),我不使用IB的主要原因是因为我所有的UI元素都是自定义的,我想用可调整大小的资产创建它们,然后通过选择自定义类型的UIButton,它在IB中变得透明/不可见。因此,如果我看不到我正在构建的接口,IB对我来说有点失去了意义。感谢链接。但是有很多示例代码。。关于哪些内容与我的案例更相关,即没有IB,将UIView子类化,有什么见解吗?请根据框架对列表重新排序,然后查看“AppKit”条目。仍然有很多,但关注“用户体验”主题。它对于UIViewController子类非常常见,对于UIViews子类非常常见-应该很容易找到一些东西。谢谢@rmaddy。这看起来确实是一种选择。然而,就像在一篇类似文章的回答中一样,UI元素的定义到处都是。理想情况下,我希望使用initWithFrame:通过添加各种按钮和标签作为子视图来组装视图,并在单独的方法中定义这些UI元素,每个方法一个。因此,如果您想创建一个新的UIButton并在view.m文件中定义它的类型、位置、大小、图像、字体等,您将如何编写该方法?