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 = ["Litre", "MilliLitre", "Fluid Ounce (US)", "Fluid Ounce (UK)", "Teaspoon (US)", "Teaspoon (UK)", "Tablespoon (US)", "Tablespoon (UK)", "Cup (US)", "Cup (UK)", "Pint (US)", "Pint (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
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!
}
}
</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]