Anfänger Frage , Swift , UIImageView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Anfänger Frage , Swift , UIImageView

    Hallo ich versuche mich gerade an einer App die mir die Querbeschleunigungen anzeigt.
    Ich habe es bisher geschafft im View zwei Werte aktualisieren zu lassen, jetzt soll sich über diese zwei Werte noch ein Punkt(UIImageView) bewegen lassen.
    Soweit so gut der Punkt wird erzeugt aber leider wird er für jede neue Koordinate wieder erzeugt, mit if let wollte ich abfragen ob der UIImageView schon geladen wurde. Nur klappt das leider nicht -.-.
    Wie fängt man sowas geschickt ab ?
    Danke:)

    C-Quellcode

    1. class ViewController: UIViewController {
    2. @IBOutlet weak var Accel_Y: UILabel!
    3. @IBOutlet weak var Accel_X: UILabel!
    4. @IBOutlet weak var Gpoint: UIImageView!
    5. let motionKit = MotionKit()
    6. override func viewDidLoad() {
    7. super.viewDidLoad()
    8. NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
    9. // Do any additional setup after loading the view, typically from a nib.
    10. }
    11. func update() {
    12. motionKit.getGyroValues(0.1) { (x, y, z) -> Void in
    13. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
    14. dispatch_async(dispatch_get_main_queue()) {
    15. self.Accel_Y.text = String(format: "%.1f", y)
    16. self.Accel_X.text = String(format: "%.1f", x)
    17. let imageView = UIImageView(frame: CGRectMake( CGFloat(100 * y) , 150, 50, 50));
    18. let image = UIImage(named: "PunktRED_5x5");
    19. imageView.image = image;
    20. self.view.addSubview(imageView);
    21. }
    22. })
    23. }
    24. }
    Alles anzeigen
    So wollte ich es Abfragen -->


    if let image == nil {
    let imageView = UIImageView(frame: CGRectMake( CGFloat(100 * y) , 150, 50, 50));
    image = UIImage(named: "PunktRED_5x5");
    imageView.image = image;
    self.view.addSubview(imageView);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jok3r ()

  • Anstandslos :D

    var image: UIImage?
    var imageView: UIImageView?
    if image == nil {
    imageView = UIImageView(frame: CGRectMake( CGFloat(100 * y) , CGFloat(40 * x), 50, 50));
    image = UIImage(named: "PunktRED_5x5");
    imageView?.image = image;
    self.view.addSubview(imageView!);
    }

    So funktioniert s auch nicht, ich habe wohl grundlegend einen Denkfehler ?
  • "...dispatch_async-Aufrufe?"

    das waren noch Reste von was anderem.

    "Wenn du das Bild verschieben willst, solltest du es verschieben und nicht immer wieder neu anlegen. "

    Darum gehts mir doch, ich will eben überprüfen ob das Bild schon geladen wurde mit der If abfrage .
  • Du meinst die vergleichs operation

    edit -> if let image = nil wäre richtig ?

    Es ist echt nett das ihr alle was schreibts, aber wie wäre denn die richtige lösung wenn ich abfragen will ob das Bild schon geladen wurde.
    Gruß
  • "Einsteigeliteratur" liegt neben mir und ich versuche es gerade umzusetzen ;-).

    Da mir keiner erklären konnte wie man abfragen kann ob ein Object geladen wurdet , hab ich mir eine andere Lösung gesucht..


    C-Quellcode

    1. class ViewController: UIViewController {
    2. @IBOutlet weak var Accel_Y: UILabel!
    3. @IBOutlet weak var Accel_X: UILabel!
    4. @IBOutlet weak var Gdisplay: UIImageView!
    5. var Gpoint:UIImageView?
    6. let motionKit = MotionKit()
    7. let Point_size = CGFloat (50)
    8. override func viewDidLoad() {
    9. super.viewDidLoad()
    10. // Create UIImageView in the center of the circle
    11. let x_pos = Gdisplay.frame.origin.x + (Gdisplay.frame.size.width / 2) - (Point_size / 2)
    12. let y_pos = Gdisplay.frame.origin.y + (Gdisplay.frame.size.height / 2) - (Point_size / 2)
    13. Gpoint = UIImageView(frame: CGRectMake( x_pos , y_pos, Point_size, Point_size))
    14. let image = UIImage(named: "PunktRED_5x5");
    15. Gpoint!.image = image;
    16. self.view.addSubview(Gpoint!);
    17. // Update values
    18. NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
    19. // Do any additional setup after loading the view, typically from a nib.
    20. }
    21. func update() {
    22. motionKit.getAccelerometerValues(0.1) { (x, y, z) -> Void in
    23. dispatch_async(dispatch_get_main_queue()) {
    24. self.Accel_Y.text = String(format: "%.1f", y)
    25. self.Accel_X.text = String(format: "%.1f", x)
    26. self.Gpoint?.layer.position.x = self.Gdisplay.frame.origin.x + (self.Gdisplay.frame.size.width / 2) + CGFloat( y * 10 )
    27. self.Gpoint?.layer.position.y = self.Gdisplay.frame.origin.x + (self.Gdisplay.frame.size.width / 2) + CGFloat( x * 10 )
    28. }
    29. }
    30. }
    Alles anzeigen
    Bisher funktioniert es .

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jok3r ()