cro*_*oss 13 slider rotation swift
我想知道如何在swift中创建一个垂直滑块.
我尝试过使用.transform然后添加一个旋转但这会返回异常并旋转整个屏幕.我只需要一个垂直滑块.
我想知道是否有人知道在swift中旋转滑块的方法?
谢谢
Cry*_*ppo 28
假设你在谈论UISlider:
您正在寻找正确的方向,但可能将AffineTransformation应用于错误的项目...您应该使用UISlider.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.
}
}
Run Code Online (Sandbox Code Playgroud)
Anu*_*pta 10
选项 1:
在 Swift 4 中:
-M_PI_2已弃用,因此使用Double.pi / 2
verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi / 2))
Run Code Online (Sandbox Code Playgroud)
或者
选项 2:适用于所有Objective C 和 Swift
Key path = layer.transform.rotation.z
Type = String
Value = -1.570795
Run Code Online (Sandbox Code Playgroud)
最重要的注意事项:keypath 前后无空格
使用面向对象编程。如果你将这种旋转定义为UIView上的Extension,那么不仅UIView而且继承自UIView的所有子类都可以旋转。这当然包括UISlider,还包括UILabel、UIButton等大约200个?其他子类...请参阅此处 UIView 子类列表
extension UIView
{
func makeVertical()
{
transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
}
}
// usage example:
sldBoilerTemperature.makeVertical()
Run Code Online (Sandbox Code Playgroud)
了解继承是件好事,可以节省很多工作。对于要进行的许多 Swift 扩展,尝试将其在类层次结构中向上移动可能是一个好主意,就像本例中一样。
| 归档时间: |
|
| 查看次数: |
14191 次 |
| 最近记录: |