web-dev-qa-db-ja.com

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

Swiftで垂直スライダーを作成する方法を知りたいと思っていました。

.transformを使用して回転を追加しようとしましたが、例外が返され、画面全体が回転しました。垂直スライダーだけが必要です。

誰かがスライダーをすばやく回転させる方法を知っているかどうか疑問に思っていましたか?

ありがとう

15
cross

あなたが話していると仮定するとISlider

あなたは正しい方向を見ていましたが、おそらく間違ったアイテムにAffineTransformationを適用しました... ISlider.transformを使用する必要があります向きを変えます。ここに作業コードがあります(私はInterfaceBuilderを使用してUISliderを追加しました):

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var verticalSlider: UISlider!{
        didSet{
            verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
28
CryingHippo

オプション1:

In Swift 4:

-M_PI_2は非推奨であるため、使用Double.pi/2

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

[〜#〜]または[〜#〜]

オプション2:for AllObjective C and Swift

Key path = layer.transform.rotation.z 
Type     =  String
Value    = -1.570795

enter image description here

最も重要な注意:キーパスの前後にスペースなし

1
Anup Gupta

OOPを使用します。この回転をUIViewの拡張機能として定義すると、UIViewだけでなく、UIViewから継承するすべてのサブクラスも回転できます。もちろん、これにはUISliderが含まれますが、UILabel、UIButton、約200も含まれますか?他のサブクラス...ここを参照 IViewのサブクラスのリスト

 extension UIView
 {
    func makeVertical()
    {
         transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
    }
 }

  // usage example:
  sldBoilerTemperature.makeVertical()  

継承に注意することは良いことで、多くの作業を節約します。多くのSwift作成する拡張機能の場合、この例のように、クラス階層内で上に移動しようとするのは良い考えかもしれません。

1
Ted van Gaalen