21

UISegmentedControlオブジェクトを水平方向ではなく垂直方向に表示する方法を教えてくれる人はいますか?

4

5 に答える 5

28

セグメント化されたコントロールの変換はいつでも変更できます。

segmentedControl.transform = CGAffineTransformMakeRotation(M_PI / 2.0);

于 2010-08-16T03:40:13.773 に答える
23

セグメント化されたコントロールを回転させると内部のテキストも回転しますが、ベンの答えは+1です。決して恐れるな!次のように、内側のラベルを回転させる必要があります。

    NSArray *arr = [segmentedControl subviews];
    for (int i = 0; i < [arr count]; i++) {
    UIView *v = (UIView*) [arr objectAtIndex:i];
    NSArray *subarr = [v subviews];
        for (int j = 0; j < [subarr count]; j++) {
            if ([[subarr objectAtIndex:j] isKindOfClass:[UILabel class]]) {
                UILabel *l = (UILabel*) [subarr objectAtIndex:j];
                l.transform = CGAffineTransformMakeRotation(- M_PI / 2.0); //do the reverse of what Ben did
            }
        }
    }

スイフト2バージョン:

for view in segmentedControl.subviews {
    for subview in view.subviews {
        if subview.isKindOfClass(UILabel) {
            subview.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI / 2.0))
        }
    }
}
于 2011-06-07T18:18:35.713 に答える
4

このコントロールは水平のみです。UISegementedControlのドキュメントから:

UISegmentedControlオブジェクトは、複数のセグメントで構成される水平方向のコントロールであり、各セグメントは個別のボタンとして機能します。セグメント化されたコントロールは、多数のコントロールをグループ化するためのコンパクトな手段を提供します。

カスタムコントロールとしてこれを行う必要があります。

于 2010-08-16T03:36:19.877 に答える
2

より現代的な迅速なバージョンのためのベンズの答えの更新。

segmentedControl.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi / 2))

CGFloatへの値のキャストに注意し、より最新のDouble.piを使用します(.piに短縮することもできます。

于 2020-01-25T06:26:59.990 に答える
0

私はココアコントロールで以下のコントロールを見つけました。これは見栄えがします。これはカスタムコントロールであり、UIControlのサブクラスのように見えます。

smverticalsegmentedcontrol

しかし、あなたが私に尋ねるなら、私は別のアプローチを試みるかもしれません、私は列幅(44px)でタブルビューを作成し、それを子としてコンテナに保持し、それをコンテナの片隅に揃え、セルをカスタマイズしてその上の私のリストと各行のタップで、コンテンツビューの詳細ビューに対応するコンテンツをロードします。試していません。すぐに結果を投稿してみます。

于 2015-08-11T15:05:45.013 に答える