OStack程序员社区-中国程序员成长平台

标题: ios - 通过 Storyboard 或以编程方式使用 UI? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:37
标题: ios - 通过 Storyboard 或以编程方式使用 UI?

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

enter image description here

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

这是我现有的左 View Controller 代码:

import UIKit

protocol LeftViewControllerDelegate {
    func leftUnitSelected(index: WUnit)

    func leftDataChanged(text: String)
}

class LeftViewController: UIViewController,UITableViewDelegate,UITextFieldDelegate {

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

    override func viewDidLoad() {
        super.viewDidLoad()
        self.dataArray = ["Litre", "MilliLitre", "Fluid Ounce (US)", "Fluid Ounce (UK)", "Teaspoon (US)", "Teaspoon (UK)", "Tablespoon (US)", "Tablespoon (UK)", "Cup (US)", "Cup (UK)", "int (US)", "int (UK)", "Quart (US)", "Quart (UK)", "Gallon (US)", "Gallon (UK)"]
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textFieldTextDidChangeOneCI:", 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) -> Int {
        return 1
    }

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


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



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

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

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

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String {
        return "From"
    }

    //MARK: 

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

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

    func text() -> String {
        return self.leftTextField.text!
    }
}

感谢您的任何建议!



Best Answer-推荐答案


基于 Storyboard的方法处理许多必要的细节以支持自适应 UI。

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

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

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

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

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

您提供的选择越少,对用户就越好。例如,如果某人位于英国,他们可能不需要转换为美国度量。如果您绝对需要提供所有可能的选择,请考虑将措施分成不同的部分(按国家或系统)。

关于ios - 通过 Storyboard 或以编程方式使用 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260706/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4