2017-06-30 8 views
1

Ich wurde gebeten, in einem Projekt mit swift und arbeiten in xcode auf einer kurzen Zeitskala, mit denen ich nicht schon gearbeitet habe, zu helfen.Bild in ScrollView nicht scrollbar

Die Aufgabe besteht darin, ein Bild "zoombar" zu machen. Und nach einigem Recherchieren habe ich festgestellt, dass es ausreichend ist, ein UIScrollView auf das Bild zu setzen. Jetzt, da die Bildansicht bereits existiert und in den Code auf einer Ebene integriert ist, traue ich mich nicht, mit einigen Einschränkungen und was nicht. Ich möchte den Prozess nicht mit einer neuen Bildansicht starten und später versuchen, ihn in den Code einzubinden. Hauptsächlich, weil die Bildansicht innerhalb einer Tabellenzelle innerhalb einer Tabellenansicht liegt.

Was ich getan habe, ist:

auf dem Storyboard

  • in der Ansicht auf dem Storyboard die Bildansicht Put.
  • Der Delegat der Bildlaufansicht wurde der Tabellenzelle zugewiesen.
  • Ich konnte nicht ganz herausfinden, wie diese zu beschränken, so dass ich meistens 'Add fehlende Einschränkungen' verwenden.

Im Code für die TableViewCell

  • die UIScrollViewDelegate
  • geerbt hat eine neue var mit @IBOutlet schwach var scroll: UIScrollView!
  • Da ich in einem Controller bin, kann ich die ViewDidLoad-Funktion nicht überschreiben, also habe ich das implementiert und minimum und maximumZoomScale auf einige Werte festgelegt.
  • eine viewForZooming Funktion implementiert, die die UIImageView

mir etwas heraus gibt, wie ich die Zwänge und die Eigenschaften des Image, um die Größe und Dinge verwenden kann, aber das unabhängig davon, was ich versuche zu tun, kann ich nicht bekommen der "Zoom" funktioniert.

Gibt es eine Eigenschaft, die der ImageView haben könnte, die dies vermasselt, was soll ich überprüfen?

+0

Ich würde vorschlagen, dass Sie eine benutzerdefinierte ScrollView mit ImageView darin erstellt haben. damit könnte man die init/layoutSubviews-Methode verwenden, um scrollView so zu konfigurieren, dass das zugewiesene Bild richtig zoomen kann (keine pixelparty etc.) –

+0

da ich ziemlich neu bin, meinst du mit den Schritten, die ich gemacht habe, oder sollte ich einen anderen Ansatz verwenden ? –

+0

Als ich verstehe, was Sie in Ihrer Frage erklären, setzen Sie einfach einen scollView über eine Bildansicht. Was ich meine ist, dass Sie eine Klasse z. "ImageScrollView" ist eine Unterklasse von "UIScrollView, UIScrollViewDelegate", die eine 'UIImageView' als Variable hat. AFAIK gibt es auch ein Apple Tutorial dafür, das werde ich nachschauen. –

Antwort

1

Nach dem Lesen und versuchen herauszufinden, was es endlich Arbeit dies wurde:

  • Die Scroll wurde gemacht Elternteil im Interface Builder zum Image
  • ich magisch gemacht die Einschränkungen passen die ScrollView auf alles um es herum meist von Fügen Sie fehlende Einschränkungen, wenn mit Constraint-Fehlern aufgefordert.
  • Rightclicked den Scroll dann für die Delegierten, klickte die + Zeichen und zog das an die UITableViewCell.
  • Ich habe auch das gleiche für die Referenzierung Outlet
  • Und Code für die UITableViewCell ist dies:

    class ClothesItemTableViewCell: UITableViewCell, UIScrollViewDelegate { 
        @IBOutlet weak var scrollView: UIScrollView! 
        var theImage: UIImage? { 
        set { 
         clothinhImageView.image = newValue 
        } get { 
         return clothingImageView.image 
        } 
        } 
    
        func viewForZooming(in scrollView: UIScrollView) -> UIView? { 
        return clothingImageView 
        } 
    } 
    

nicht vollkommen klar sein könnte, und ich konnte nicht genau finden Artikel, der die Arbeit erledigt hat. Aber es gibt viele, die versuchen, dieses Problem auf unterschiedliche Weise zu lösen, und irgendwie hat das funktioniert. Hofft, es hilft jemandem!