2017-03-22 10 views
0

私はコードで私の質問を説明したいと思います。まず、以下のカスタムラベルコードを見ることができます。すぐにUILabelの制限を作成する方法

let resultLabel : UILabel = { 
    let lbl = UILabel() 
    lbl.textColor = .white 
    lbl.textAlignment = .right 
    lbl.text = "0" 
    lbl.font = UIFont(name: "Helvetica Neue", size: 35) 
    lbl.minimumScaleFactor = 0.75 
    lbl.lineBreakMode = .byClipping 
    lbl.adjustsFontSizeToFitWidth = true 
    return lbl   
}() 

私はちょうどこれらのコード行でラベルを作成しました。私はまたビューのフレームの高さのサイズと左にパッディングに応じて彼らに特定の高さを与え、あなたは以下の制約コードを見ることになります。

resultLabel.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: view.frame.size.height/7, paddingLeft: 2, paddingBottom: 0, paddingRight: 5, width: 0, height: view.frame.size.height/7) 

私はそう私はUILabelのためchracter制限を設定したいボタンをクリックするに従って、UILabelに値を割り当てます。私が書いたコードによると、それは私が望むようにデータを切り取ったが、その値で同じ動作をしなかった。どのように達成することができますあなたは私を助けることができますか?ありがとう。

+0

それを変更し '私が望んでいたとして、それがデータをトリミングしますが、それはなかった量子力学(私はそれを覚えて、少なくとも何)、を思い出しましたので、値段で同じ行動をしてください。 " - これ以上説明できますか? – Losiowaty

+0

もちろん、説明しましょう。私は限界のために私の画面に12345を見ますが、値を調べると、私は1234567を見ることができました(最後の2桁のテストをクリックすると画面には表示されませんが、 –

答えて

0

あなたが望むものは、箱から出すことは不可能であり、私の意見では本当に不思議です。これで、データとそのプレゼンテーションが分離されます。あなたのビューコントローラのサイズが変更された場合(デバイスが回転した、またはアプリが分割モードでiPad上で実行され、ユーザーがアプリケーションのサイズを変更した場合)、さらに多くのデータを見ることができるとします。ラベルは元のデータを保持するため、すべて自動的に行われます。レンダリングされた表現と一致するようにデータを切り取った場合は、そのような変更にすべて反応し、元のデータをラベルに再割り当てする必要があります。

現実世界の例を提供する - 大きめの(ビルサイズの)看板を、小さな(大きさ、レターペーパーサイズの)ウィンドウを通して見ていると想像してください。ビルボードの一部しか見ることはできませんが、すべてがまだあります。同様に、UILabelは、提供されたデータの「ウィンドウ」に過ぎません。

今、これを実装することは簡単なことではありません。そのようなUIQuantumLabel *は、現在のフォントのデータの各文字/数字/絵文字/文字の幅を考慮する必要があります(モノスペースフォントに制限しない限り)。自動フォントユーザーがデバイスのアクセシビリティ設定でフォントサイズを小さくしたり大きくしたりしたかどうか、そしておそらくさらにいくつかの要因が発生しています。

これはどのようなケースですか?なぜあなたのデータを切り取り、元のままにしたくないのですか? * UIQuantumLabel


そのオブジェクトを観察する状態:)

+0

私はこれらのようなものを説明しましょう。あなたがiphone 7のios電卓を調べると、9桁の数字がかかります。何かを乗算したいときにも値段が上がります画面データを無視します。この外観に近づけることができますか? –

+0

さて、いくつかの種類のキーボードを使って**入力**を** UILabel/UITextField/UITextViewに入力することは簡単にできますし、ひとつずつ作業して、やる方法についてのチュートリアルがたくさんありますそれ - [この1つのような](http://stackoverflow.com/questions/433337/set-the-maximum-character-length-of-a-uitextfield)。 'UILabel'を例えば5文字に制限したい場合は、まずデータを適切に準備する必要があります。 'UILabel'(または他のビュー)はできるだけ愚かでなければなりません。すべてのあなたのロジックは、どこか他の場所で発生し、結果は単に画面上に表示されます。 – Losiowaty

+0

実際に私のuilabelは電卓のようなボタンのタグに従って値を取得します。私はキーボードなどを使用していません。だからデバイスの画面に応じて、もちろんラベルの幅が拡張されますが、それに応じて私はフレームの値とビジュアルのデータを保持する必要があります。 –

関連する問題