図面を内側にしてUIViewを回転させたい(円、矩形または線)。描画中にUIViewを回転させる際の問題
:私はビューを回転し、回転せずに...図面ビューに従っていません(私は、図面のいくつかのプロパティを変更したときに、私はつまり、IRを必要とする)描画のUIViewを更新するときに問題があります回転に
のUIView:ここ
は私です簡単なコード(元のコードから少し抜粋):
メインのViewController
class TestRotation: UIViewController {
// MARK: - Properties
var drawingView:DrawingView?
// MARK: - Actions
@IBAction func actionSliderRotation(_ sender: UISlider) {
let degrees = sender.value
let radians = CGFloat(degrees * Float.pi/180)
drawingView?.transform = CGAffineTransform(rotationAngle: radians)
drawingView?.setNeedsDisplay()
}
// MARK: - Init
override func viewDidLoad() {
super.viewDidLoad()
drawingView = DrawingView(frame:CGRect(x:50, y:50, width: 100, height:75))
self.view.addSubview(drawingView!)
drawingView?.setNeedsDisplay()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
のUIView
class DrawingView: UIView {
override func draw(_ rect: CGRect) {
let start = CGPoint(x: 0, y: 0)
let end = CGPoint(x: self.frame.size.width, y: self.frame.size.height)
drawCicrle(start: start, end: end)
}
func drawCicrle(start:CGPoint, end:CGPoint) {
//Contexto
let context = UIGraphicsGetCurrentContext()
if context != nil {
//Ancho
context!.setLineWidth(2)
//Color
context!.setStrokeColor(UIColor.black.cgColor)
context!.setFillColor(UIColor.orange.cgColor)
let rect = CGRect(origin: start, size: CGSize(width: end.x-start.x, height: end.y-start.y))
let path = UIBezierPath(ovalIn: rect)
path.lineWidth = 2
path.fill()
path.stroke()
}
}
// MARK: - Init
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.gray
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
私が回転した後、表示を更新していない場合、問題が一時的に解決されているようですしかし、他の理由(プロパティが変更された)のために後でリフレッシュする必要がある場合は、問題が再度表示されます。
どうすればよいですか?事前に感謝
ありがとう:
はここで変更されたコードです!私はたくさんの戦いの後あなたの答えを見て、私はそれを見た前に私はrect対boundsについての問題を発見...;) –