2016-02-24 20 views
6

私は、UINavigationItemの中央にあるビュー内のUILabelの右側に下向きの矢印(キャレット?)を作成する最良の方法を探しています。iOS Swiftプロジェクトで下向き矢印/キャレット(iOS 9ミュージックアプリのような)を実装するにはどうすればよいですか?

enter image description here

enter image description here

全体のことは、iOS 9音楽アプリでダウンarowのようになります。ラベルのテキストは、実行時に変更され、矢印を含むラベルのタイトル/テキストは、このスクリーンショットのように中央にする必要があります。

Screenshot of Music app on IOS 9.2

現在、私のようなテキストの最後に\u{25BE}文字を追加この:

self.lblSelectedAlbum.text = self.lblSelectedAlbum.text! + " \u{25BE}" 

しかし、これはいくつかの負の影響があります

  1. それはcluncky
  2. に見えますラベルテキストが長すぎる場合は、下向きの矢印は、この最高の実装方法の

任意のアイデアを

  • 消えますか?ありがとう!

  • 答えて

    3

    属性付きテキストに外部フォントを使用することをおすすめします。一例:Font Awesomeのアングル・ダウンとシェブロン・ダウン。

    enter image description here

    テキストビューに切り替えると、あなたはまた、それがthisの例のように描く方法を変更するUILabelをサブクラス化することができます

    myTextView.edgeInsets:UIEdgeInsetsMake(0, 10, 0, 0)]; //Replace 10 with the actual width that will center it. 
    

    のようなインセットを設定することができます。

    +0

    いいえ、FontAwesomeをインストールして、「Lbl Selected Blog」の右側にアングルを下げた文字で2番目のラベルを追加しました。私は両方のラベルの右側が負のオフセットを持つ矢印と揃​​うように制約を設定します。現在、テキストが中央に置かれている間、タイトルバーの右端に矢印が表示されます。私は矢印がタイトルテキストの右側にスティックしたいです。タイトルテキストが動的に変化するので、これを絶対値で修正することはできません。何か案は?ありがとう! – Georg

    +0

    Hmm .. 1つのラベルを使用するという私の提案を試しましたか?属性付きテキストに設定し、同じラベルに2つのフォントを設定することができます。 –

    +1

    ありがとう、それはトリックでした。 SwiftのNSAttributedStringsをリファレンスとして作成する方法について、この参考資料を追加したいと思います。http://stackoverflow.com/questions/24666515/how-do-i-make-an-attributed-string-using-swift – Georg

    0

    ユーザーボタンと設定するテキストを別の方法とし、設定したテキストをボタンイメージを下矢印に設定します。画像とタイトルのEdgesInsetを使用するよりも、ボタン画像とボタンタイトルの位置を設定する必要がある場合。これがあなたに役立つことを願っています。おかげ

    2

    ここではUnicodeです:U {2304}

    \文脈では、このようになります。新しいフォントをダウンロードする手間を省く。

    let workout = NSMutableAttributedString(string: "Workout", attributes: [NSFontAttributeName: UIFont(name: "Verdana", size: 14)!]) 
        let arrow = NSMutableAttributedString(string: "\u{2304}", attributes: [NSFontAttributeName: UIFont(name: "Verdana", size: 37)!]) 
    
        let combination = NSMutableAttributedString() 
        combination.append(workout) 
        combination.append(arrow) 
    
        sender.setAttributedTitle(combination, for: .normal)