2016-06-07 7 views
0

Ich habe ein Problem, ich bin ein programmgesteuertes Erstellen von ImageView und fügen Sie es dann zu einer Centeransicht, die Art von Arbeit ist. Aber das Problem ist, dass es nicht den ganzen Platz in der Centeransicht einnimmt, es erscheint ja in der Übersicht, deckt aber nicht immer alles ein bisschen ab. Irgendeine Hilfe?iOS Swift, wie ein Imageview in einer uiview genau platziert

Der Code:

//let backgroundImage = UIImageView(frame: centerView.frame) 
      let backgroundImage: UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.centerView.bounds.size.width, height: self.centerView.bounds.size.height)) 
      print("backgorundImage coordinates: \(backgroundImage.frame)") 
      backgroundImage.image = drawOverImage 
      backgroundImage.sizeThatFits(CGSizeMake(centerView.bounds.width, self.centerView.bounds.height)) 
      //check this the image is being drawn bottom because is the fame for the previous 0.0 
      //backgroundImage.autoPinEdgeToSuperviewMargin(ALEdge.Top, relation: NSLayoutRelation.Equal) 
      //backgroundImage.contentMode = UIViewContentMode.ScaleAspectFill //too big 
      //backgroundImage.contentMode = UIViewContentMode.ScaleAspectFit  //sama 
      backgroundImage.contentMode = UIViewContentMode.ScaleAspectFill 
      backgroundImage.clipsToBounds = true 
      //imageView.image = background 
      backgroundImage.center = view.center 

      let coordinatesForImage: CGRect = self.view.convertRect(backgroundImage.frame, toView: centerView) 
      let pointOfImage: CGPoint = backgroundImage.convertPoint(self.centerView.frame.origin, toView: backgroundImage) 

      print("coordinates test: \(coordinatesForImage)") 
      print("point x: \(pointOfImage.x)") 
      print("point y: \(pointOfImage.y)") 

      //backgroundImage.contentMode = UIViewContentMode.ScaleToFill 
      self.centerView.insertSubview(backgroundImage, atIndex: 0) 


      let pointOfImageToSuperView: CGPoint = (backgroundImage.superview?.convertPoint(backgroundImage.center, toView: self.centerView))! 

      print("superview imagepoint: \(pointOfImageToSuperView)") 

Die Kommentare sind alles, was ich zu tun werde versuchen.

EDIT: Dies ist, was passiert.

Missing bottom

ich ein wenig vom Boden fehlt, jetzt, wenn ich weiß nicht, die Größe des Bildes oder was könnte ich die Größe des uiview ändern das Bild passen?

+1

Sie sind eine ganze Reihe von Rahmenmanipulations tun ... Wenn Sie es abdecken wollen, genau das Superview ('centerView') alles, was Sie tun müssen, wird die Rahmen wie in der ersten Zeile. Tun Sie nicht 'sizeThatFits'. Tun Sie nicht '* .center = * .center'. Führen Sie keine Punkt- oder Rect-Konvertierung von einer Ansicht zur anderen durch. Etc ... Ihre erste Zeile sagt die Ansicht "Seien Sie genau so groß wie diese andere Ansicht und beginnen Sie bei (0,0)". Dann fügen Sie es als Unteransicht hinzu und es wird perfekt innerhalb seiner Eltern ('centerView') orientiert sein. – Putz1103

+0

Nun, ich habe es so, wie ich es wollte, aber gibt es eine Möglichkeit, dem CenterView zu sagen, dass ich dich so groß wie das Bild haben will, nachdem es in dir ist? –

Antwort

1

einfach versuchen:

let backgroundImage: UIImageView = UIImageView(frame: self.centerView.bounds) 
backgroundImage.clipsToBounds = true 
backgroundImage.contentMode = .ScaleAspectFill 
self.centerView.addSubview(backgroundImage) 
+0

Ja, das ist es, aber das Bild deckt nicht die ganze Gegend ab, es fehlt ein bisschen nach unten. Ich weiß nicht warum, oder? –

+0

@ Pedro.Alonso Versuchen Sie die 'contentMode' Eigenschaft des' UIImageView's zu bearbeiten. Aktualisierte Antwort – hgwhittle

+0

Fertig siehe meine Bearbeitung –

Verwandte Themen