Ich möchte einen elastischen Gummi-Effekt machen, wenn ich über meinen Kreis wische. Ich eröffne mein Kreis auf diese Weise:Elastischer Gummiband-Effekt auf Kreis
import UIKit
class ViewController: UIViewController {
let screenSize: CGRect = UIScreen.mainScreen().bounds
let g = ShapeView(origin: CGPoint(x: UIScreen.mainScreen().bounds.width/2, y: UIScreen.mainScreen().bounds.height/2))
override func viewDidLoad() {
self.view.addSubview(g)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches {
let location = touch.locationInView(self.view) //Location of your finger
print((location.x/screenSize.width))
self.view.test((location.x/screenSize.width), v: g);
}
}
}
import UIKit
extension UIView {
func test(t : CGFloat, v : UIView){
v.superview!.bringSubviewToFront(v)
v.transform = CGAffineTransformMakeScale(CGFloat(t) + 1,1);
}
}
class ShapeView: UIView {
let size: CGFloat = 150.0
init(origin: CGPoint) {
super.init(frame: CGRectMake(0.0, 0.0, size, size))
self.center = origin
self.backgroundColor = UIColor.clearColor()
}
// We need to implement init(coder) to avoid compilation errors
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func drawRect(rect: CGRect) {
var path = UIBezierPath(ovalInRect: rect)
path.closePath()
UIColor.blackColor().setStroke()
path.fill()
}
}
Dies funktioniert wie erwartet. Ich bekomme diese Ansicht:
Aber was ich will ist, dass, wenn ich über das Bild wische, dass es einen "klebrigen" Effekt bekommt. Etwas wie folgt aus:
Die blaue Linie ist die Mitte te tatsächlichen Kreis. Und es wird nach rechts gezogen. Es wird zu einer Finsternis aus der rechten Hälfte des Kreises. Dies geht auf Berührung. Wenn ich mich zurück bewege, wird es zu dem Kreis, der es war. Wie kann ich das machen?
Meinst du diese Funktion: CGAffineTransformMakeScale? – da1lbi3
Sicher, das ist eine Möglichkeit, eine Maßstabsumwandlung zu machen. – matt
Ihre Lösung hat für mich funktioniert. Aber wie kann ich die Transformation nur auf die rechte Seite meines Kreises anwenden? Ich habe meinen Code BTW aktualisiert. – da1lbi3