web-dev-qa-db-ja.com

UISliderを垂直に変更するには?

アプリのUISliderをカスタマイズしています。スライダーを垂直方向にしたいのですが、デフォルトのUISliderは水平方向です。 UISliderの向きを変更する方法が見つかりませんでした。

XCodeで垂直スライダーを作成するにはどうすればよいですか?

23
SeongHo

デフォルトでは、UISliderは水平(-)です。縦書き(|)にしたい場合は、おそらくCGAffineTransformを使用してプログラムで行う必要があります。たとえば、このスニペットをviewDidLoadに追加したり、適切と思われる場所に追加したりできます。

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;
49
PengOne

私は問題を抱えていました:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;

viewDidLoadメソッドにコードがあったからです。代わりに、コードをViewDidAppearに配置すると、正常に機能しました。

編集:ViewDidAppearにある必要はありません。ViewDidLoadも正常に機能します(さらに優れています)。自動サイズ変更を無効にするか、回転しているスライダーに制約を設定して、回転後にサイズが変更されないようにすることができます。

2
KLD

自動レイアウトを使用している場合:

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の制約を削除することです。 frameプロパティを設定して、手動でサイズを変更する必要がある場合があります。

2
Antzi