【问题标题】:iOS - Location of a TextField created programmaticallyiOS - 以编程方式创建的 TextField 的位置
【发布时间】:2017-08-10 05:03:22
【问题描述】:

我有一个疑问:从代码而不是从界面生成器创建 TextField 是错误的?

例如,我使用的是 CocoaPods 拍摄的“AwsomeTextField”。

在解释的页面上说:

  let field = AwsomeTextField(frame: CGRect(x: 60, y: 200, width: 320, height: 44))
  field.placeholder = "test"
  view.addSubview(field)

但是如果我用CGRect (x: 60, y: 200, width: 320, height: 44) 分配一个绝对位置,那么如果我在 iPad 或 iPhone 上运行该应用程序,那么图形当然会变得很糟糕。

我可以使用界面生成器中的 cocoa pod 的模块来添加正确的约束,或者我也可以通过代码来处理自动布局?我很困惑!

【问题讨论】:

    标签: ios objective-c iphone cocoa


    【解决方案1】:

    'AwsomeTextField' Pod 是 UITextField 的扩展。

    在界面生成器中拖动一个 UITextField 对象,制作一个插座并将插座类型切换为 AwesomeTextField,如下所示:

    @IBOutlet weak var awesomeTextField: AwsomeTextField!
    

    还在 xCode 的 Identity Inspector 的 Custom Class 部分中包含 AwsomeTextField 类。

    这样您就不需要一直从代码中创建它;]

    【讨论】:

      【解决方案2】:

      没有什么可以阻止您向代码中创建的视图添加约束:

      let field = AwsomeTextField(frame: .zero) // Create the view with a zero frame
      field.placeholder = "test"
      field.translatesAutoresizingMaskIntoConstraints = false // You should always do this to views you create in code that you want to apply layout constraints to
      view.addSubview(field)
      // No that you have added field as a subview, you can add constraints to it here.
      

      如果您想使用 Interface Builder,请将一个普通的 UIView 从选择器拖到您的视图控制器上并添加任何约束。然后,将视图的类从 UIView 设置为 AwesomeTextField

      【讨论】:

      • 是的,我明白了,谢谢。但是,如果我想使用界面构建器而不是对每个项目进行编程? (总是使用一些 pod)
      猜你喜欢
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多