IPadアプリの要件に従って、UISliderを垂直に表示します。
私はiOS7コンパイラを使用しており、展開ターゲットはiOS6です。
ストーリーボードで、幅600ピクセルの水平UISliderを追加しました。私はビューコントローラーでIBOutletを作成しました。自動レイアウト制約を設定していません。以下のコードを使用して、回転させて垂直にします。
self.slider.transform = CGAffineTransformMakeRotation(M_PI_2);
回転の前後で、正しいスライダーのフレームサイズを印刷しています。しかし、スライダーは適切に見えません。真ん中のつまみだけを表示しています。 UISliderを回転するにはどうすればよいですか?
私はそれをこのように機能させることができました:
viewDidLoad:
追加した
[self.slider removeConstraints:self.slider.constraints];
[self.slider setTranslatesAutoresizingMaskIntoConstraints:YES];
スライダーを回転させる前に呼び出されるように
self.slider.transform=CGAffineTransformRotate(self.slider.transform,270.0/180*M_PI);
削除してスーパービューに再度追加する必要はありません。
IOS 8とXcode 6で動作する垂直スライダーがあり、ストーリーボードに3つの制約と1行のコードしかありません。インターフェースのスクリーンキャプチャは次のとおりです。
垂直スライダーとその隣のUIImageViewの間には3つの制約があります。
そしてもちろん、1行のコードは次のとおりです。
self.vSlider.transform = CGAffineTransformMakeRotation(-M_PI_2);
Xcode 6のストーリーボードでこれらの制約を設定するのは簡単ですが、iOS 7または6をサポートするコードでこれらの制約を記述するのは簡単だと思います。
これは古いトピックですが、Swiftソリューションは、ストーリーボードに自動レイアウト制約があり、他には何もありません。
1/IBOutletに回転を追加する必要があります:
@IBOutlet weak var mySlider: UISlider! {
didSet {
mySlider.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2)
} // didSet
} // IBOutlet
2 /スライダーがその中心を中心に回転することを念頭に置いて、ストーリーボードで制約を定義します。
たとえば、mySliderをmyViewの左側に配置する場合、3つの制約が必要です。
mySliderはもちろんストーリーボードでは水平に表示されますが、サイズは正しく、中心は正しく配置されます。
ViewControllerのAuto-Layoutのチェックを外します。SDK7.0で垂直方向に動作させるための他のオプションはありません:(
UISliderを垂直に配置することに関しては、非常に多くの解決策があります。これは、autoLayoutが有効になっている(デフォルトではストーリーボード内)XCode5のiOS7の私の概要です。
viewDidLoad
にメソッドを追加self.slider.transform = CGAffineTransformMakeRotation(M_PI_2);
スライダーに関するautoLayout制約を定義明示的にストーリーボードで好きなように
私にとっては、2ステップのプロセスが最も効果的でした(以前のソリューションのいくつかを組み込んでいます)
Autolayoutステップ)IBに垂直ビューを追加し、autolayoutを使用してそれを隣接するビューにリンクしました。次に、ビューにスライダーを追加して、ビューの中央に接続しました。次に、スライダーの幅をビューの高さに接続しました。最後に、スライダーアウトレットを(スライダーとして)私のViewControllerコードにドラッグしました
コードステップ)次に、単にviewWillAppear(Swift-code)にを追加します。let trans = CGAffineTransformMakeRotation(CGFloat(M_PI_2)); slider.transform = trans;
これを試して :-
self.slider.transform = CGAffineTransformRotate(slideToUnlock.transform、-90.0/180 * M_PI);
ISliderを垂直位置で回転させるには、以下のコードを試してください。
//To rotate the slider in Vertical Position
CGAffineTransform sliderRotation = CGAffineTransformIdentity;
sliderRotation = CGAffineTransformRotate(sliderRotation, -(M_PI / 2));
sliderBrightness.transform=sliderRotation;
あなたの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の制約を削除することです。フレームプロパティを設定して、手動でサイズを変更する必要がある場合があります。
ストーリーボードを使用してUISliderを構築することはできません。コーディングしてUISliderを構築します。
slider = [[UISlider alloc] initWithFrame:CGRectMake(640, 150, 600, 400)];
[slider.layer setAnchorPoint:CGPointMake(0.0f, 0.0f)];
slider.transform = CGAffineTransformMakeRotation(M_PI/2);
[self.view addSubview:slider];