菜鸟教程小白 发表于 2022-12-12 17:37:14

ios - 通过 Storyboard 或以编程方式使用 UI?


                                            <p><p>我无法让我的文本保持在屏幕宽度内。我缩小了文本,不想让它变得更小(请参见下文):</p>

<p> <a href="/image/P2a2e.png" rel="noreferrer noopener nofollow"><img src="/image/P2a2e.png" alt="enter image description here"/></a> </p>

<p>就拥有适合屏幕的自适应布局而言,使用 Storyboard 而非以编程方式进行会更好吗?</p>

<p>这是我现有的左 ViewController 代码:</p>

<pre><code>import UIKit

protocol LeftViewControllerDelegate {
    func leftUnitSelected(index: WUnit)

    func leftDataChanged(text: String)
}

class LeftViewController: UIViewController,UITableViewDelegate,UITextFieldDelegate {

    @IBOutlet weak var leftTextField: UITextField!
    var dataArray: = []
    var delegate: LeftViewControllerDelegate?

    override func viewDidLoad() {
      super.viewDidLoad()
      self.dataArray = [&#34;Litre&#34;, &#34;MilliLitre&#34;, &#34;Fluid Ounce (US)&#34;, &#34;Fluid Ounce (UK)&#34;, &#34;Teaspoon (US)&#34;, &#34;Teaspoon (UK)&#34;, &#34;Tablespoon (US)&#34;, &#34;Tablespoon (UK)&#34;, &#34;Cup (US)&#34;, &#34;Cup (UK)&#34;, &#34;Pint (US)&#34;, &#34;Pint (UK)&#34;, &#34;Quart (US)&#34;, &#34;Quart (UK)&#34;, &#34;Gallon (US)&#34;, &#34;Gallon (UK)&#34;]
      NSNotificationCenter.defaultCenter().addObserver(self, selector: &#34;textFieldTextDidChangeOneCI:&#34;, name: UITextFieldTextDidChangeNotification, object: self.leftTextField)
    }

    override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
    }

    //MARK: UITableView Datasource

    func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int {
      return 1
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      return self.dataArray.count
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
      let cell = tableView.dequeueReusableCellWithIdentifier(&#34;cell&#34;, forIndexPath: indexPath)
      cell.textLabel!.text = self.dataArray
      cell.textLabel!.font = UIFont(name: cell.textLabel!.font.fontName, size:12) // Change the font size as per your requirement
      cell.imageView!.image = UIImage(named: &#34;20x20_empty-round-radiobutton-choice-ui&#34;)
      return cell
    }



    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -&gt; CGFloat {
      return 32
    }

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
      let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
      cell.imageView!.image = UIImage(named: &#34;20x20_empty-round-radiobutton-choice-ui&#34;)
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
      let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
      cell.imageView!.image = UIImage(named: &#34;20x20_round-choice-radiobutton-ui&#34;)
      if let delegate = delegate {
            delegate.leftUnitSelected(WUnit(rawValue: indexPath.row)!)
      }
    }

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -&gt; String {
      return &#34;From&#34;
    }

    //MARK:

    func setText(text: String) {
      self.leftTextField.text = text
    }

    func textFieldTextDidChangeOneCI(notification: NSNotification) {
      let textfield: UITextField = notification.object! as! UITextField
      if Double(textfield.text!) &gt; 0.0 {
            if let delegate = delegate {
                delegate.leftDataChanged(textfield.text!)
            }
      }
    }

    func text() -&gt; String {
      return self.leftTextField.text!
    }
}
</code></pre>

<p>感谢您的任何建议!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>基于 Storyboard的方法处理许多必要的细节以支持自适应 UI。</p>

<p>除此之外,您还可以重新考虑您的设计。它并不是真正的 iOS 原生设计,因为 iOS 没有单选按钮或水平紧凑的拆分表格 View 。</p>

<p>您可以查看现有的单位转换应用,了解它们如何让用户选择单位。</p>

<p>一个建议是(一次)只要求一个单位。一旦你知道了一个单位,你就可以预测第二个单位,从而使用户不必选择那个可能的选择。</p>

<p>无论哪种方式,您都应该考虑 trait 类以及您的 UI 如何适应不同的设备(例如,模态、弹出框、 Split View)。</p>

<p>至于 UI,您可以通过选择器、tableview 的复选标记辅助 View 或自定义控件来执行此操作。请记住,用户界面越熟悉和直观,用户就越不可能对如何使用您的应用感到困惑。</p>

<p>您提供的选择越少,对用户就越好。例如,如果某人位于英国,他们可能不需要转换为美国度量。如果您绝对需要提供所有可能的选择,请考虑将措施分成不同的部分(按国家或系统)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 通过 Storyboard 或以编程方式使用 UI?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34260706/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34260706/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 通过 Storyboard 或以编程方式使用 UI?