web-dev-qa-db-ja.com

UISliderを垂直に配置する方法?

UISliderを縦に入れたいです。これについてはわかりませんので、手伝ってください。

42
MD.

これはプログラマティックに行う必要があります。 UISliderがsliderという変数にバインドされていると想定して、ViewController.mのviewDidLoadメソッドに次のコードを追加します。

- (void)viewDidLoad {

    [super viewDidLoad];

    CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5);
    slider.transform = trans;
}

これについてさらにヘルプが必要な場合はお知らせください。

104
ravinsp

Xcode 4.2以降では、Interface Builderでsort ofと同じことができます。

  • スライダーを作成する
  • 「IDインスペクター」を表示する
  • 「ユーザー定義ランタイム属性」を追加する
  • キーのパスを「layer.transform.rotation.z」に設定し、タイプを "ストリング" ("数" 浮動小数点値は許可されません) (Xcode 5以降で可能)と "-1.570795"(-π/ 2)の値。

残念ながら、それは依然としてInterface Builderでは水平として表示されます。

ただし、中心を配置でき、カスタムクラスを作成する必要がないため、場合によっては十分に役立つことがあります。効果はravinspのコードと同じです。

30
nschum

スウィフト3:

slider.transform = slider.transform.rotated(by: CGFloat(0.5 * Float.pi))

//必要に応じて1.5を使用してスライダーの影を反転します

6
André Abreu

自動レイアウトで作業する場合:

あなたのviewDidLoadで、試してください:

UIView *superView = self.sizeSlider.superview;
[self.sizeSlider removeFromSuperview];
[self.sizeSlider removeConstraints:self.view.constraints];
self.sizeSlider.translatesAutoresizingMaskIntoConstraints = YES;
self.sizeSlider.transform = CGAffineTransformMakeRotation(M_PI_2);
[superView addSubview:self.sizeSlider];

これは制約では機能しないため、コツはuisliderの制約を削除することです。フレームプロパティを設定して、手動でサイズを変更する必要がある場合があります。

4
Antzi

IBOutletおよびセッターオブザーバーの使用。最大値を一番下にしたい場合は、piを正の2で割ります。

@IBOutlet weak var slider: UISlider! {
    didSet {
        slider.transform = CGAffineTransform(rotationAngle: .pi / -2)
    }
}
0
Alex Chase