2017-10-02 11 views
2

こんにちは、私は20以上の項目で動的なUISegmentedビューを作成したいと思います。私はそれを試しましたが、出力はこのようです。スクロール3でスクロールダイナミックUISegmentedControl

enter image description here

テキストが完全に表示されていないスライスされます。私はそれを左右にスクロールし、全文を表示したい。この問題を解決するのに役立つ人もいます。 TNX

ビューコントローラ

override func viewDidLoad() { 
    super.viewDidLoad() 

    let items = ["All Fruits", "Orange", "Grapes", "Banana", "Mango", "papaya", "coconut", "django"] 
    let filtersSegment = UISegmentedControl(items: items) 
    filtersSegment.frame = CGRect.init(x: 10, y: 60, width: 300, height: 50) 
    filtersSegment.selectedSegmentIndex = 0 
    filtersSegment.tintColor = UIColor.black 
    filtersSegment.addTarget(self, action: #selector(self.filterApply), for: UIControlEvents.valueChanged) 
    self.view.addSubview(filtersSegment) 
} 

@objc private func filterApply(segment:UISegmentedControl) -> Void { 
    print("Selected Index : \(segment.selectedSegmentIndex)") 
} 
+0

使用scrollviewをいただき、ありがとうございます。セグメントコントローラをスクロールビューに追加します。 – Krunal

+0

セグメント化されたコントロール以外を使用してください。おそらくピッカーの視点。 – rmaddy

+0

セグメントコントロールをスクロールビューに埋め込みます。また、フレームを設定することによって、表示可能な3,4のテキストを表示するようにセグメントコントロールを制限します。 – Jamil

答えて

1

それはあなたの目標を達成するためにではなく、セグメントコントローラを別のコントローラを使用することをお勧めします。

しかし、セグメントコントローラのみを使用する場合は、セグメントコントローラが追加されなければなりません。なぜなら、タイトルは動的なので、その理由がわかりません。

最初にスクロールビューにセグメントコントローラを追加します。セグメント・コントローラにはメソッド名setWidth(_ width: CGFloat, forSegmentAt segment: Int)があり、各セグメントの幅をインデックスに設定します。

ここで私は論理を書いています。

var scrollViewWidth:Float = 0.0 
    let items = ["All Fruits", "Orange", "Grapes", "Banana", "Mango", "papaya", "coconut", "django"] 
    for (index, element) in items.enumerated() { 
     let size = element.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 20.0)]) //you can change font as you want 
     segmentCon.setWidth(size.width, forSegmentAt: index) 
     scrollViewWidth = scrollViewWidth + Float(size.width) 
    } 

    // Here you can set content width of UIScollView by use of "scrollViewWidth" 
    // scrollView.contentSize = CGSize(width: scrollViewWidth, height: 40)// height should whatever you want. 
1

あなたは

[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] setNumberOfLines:0]; 

segment.apportionsSegmentWidthsByContent = YES; 

スウィフトのように試すことができます。

何かのように、

UILabel.appearance(whenContainedInInstancesOf: [UISegmentedControl.self]).numberOfLines = 0 
    segment.apportionsSegmentWidthsByContent = true 

、あなたはscrollviewにあなたのセグメント化された制御を取ることができます。しかし、UISegmentedControlでは、4つまたは5つ以上のセグメントを使用しないでください。それは3つまたは4つのオプションを表示することが主な目的です!あなたはあなたの目標を達成するために異なるメカニズムを試すべきです!

this postも参考にしてください。

0

それは別のコントローラまたはライブラリの代わりに、UISegmentコントローラ

を使用している私はのいずれかで使用するライブラリのリンクを言及していますUISegmenteControll良いオプション

UIScrollviewとを管理するために、(不可能ではない)非常に困難です

PageMenuダイナミックUISegmentコントローラに

を作成するために、私のプロジェクトこのライブラリはあなたに

を助けるかもしれ

希望は

関連する問題