2016-09-08 3 views
0

I am unsure how to implement a sliding imageview like the one in the top of this screenshot.Wie eine gleitende Image als Header auf einer Eureka Form

ich implementieren bin mit Eureka Formen und ich versuche, diese Schiebeimageview als Header enthalten.

Im Moment verwende ich eine benutzerdefinierte Ansicht und diese Library

Ich denke, die Wurzel meiner Frage durch die Gestenerkenner und die Methode „auf“ verursacht wird. Xcode gibt einen Fehler in der Zeile self.presentViewController(ctr,animated: true,completion:nil) aus. Ich verstehe, dass es keinen Viewcontroller in einer UIView darstellen kann. Ich bin mir nur nicht sicher, wie ich das gleiche Ergebnis erzielen kann, wenn ich den View-Controller in der UIView-Subklasse präsentiere.

Hier ist mein Code:

class profilePicHeader: UIView { 

let slideshow = ImageSlideshow() 
var slideshowTransitioningDelegate: ZoomAnimatedTransitioningDelegate? 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    let localSource = [ImageSource(imageString: "GardenExample")!,ImageSource(imageString: "OvenExample")!] 


    slideshow.backgroundColor = UIColor.whiteColor() 
    slideshow.pageControlPosition = PageControlPosition.UnderScrollView 
    slideshow.pageControl.currentPageIndicatorTintColor = UIColor.lightGrayColor(); 
    slideshow.pageControl.pageIndicatorTintColor = UIColor.blackColor(); 
    slideshow.contentScaleMode = UIViewContentMode.ScaleAspectFill 


    slideshow.setImageInputs(localSource) 


    let recognizer = UITapGestureRecognizer(target: self, action: #selector(profilePicHeader.click)) 
    slideshow.addGestureRecognizer(recognizer) 

    slideshow.frame = CGRectMake(0, 0, 320, 200) 
    slideshow.autoresizingMask = .FlexibleWidth 
    self.frame = CGRectMake(0, 0, 320, 130) 
    slideshow.contentMode = .ScaleAspectFit 
    self.addSubview(slideshow) 
} 

func click() { 
    let ctr = FullScreenSlideshowViewController() 
    ctr.pageSelected = {(page: Int) in 
     self.slideshow.setScrollViewPage(page, animated: false) 
    } 

    ctr.initialImageIndex = slideshow.scrollViewPage 
    ctr.inputs = slideshow.images 
    slideshowTransitioningDelegate = ZoomAnimatedTransitioningDelegate(slideshowView: slideshow, slideshowController: ctr) 
    // Uncomment if you want disable the slide-to-dismiss feature on full screen preview 
    // self.transitionDelegate?.slideToDismissEnabled = false 
    ctr.transitioningDelegate = slideshowTransitioningDelegate 
    self.presentViewController(ctr, animated: true, completion: nil) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
     } 
} 

Antwort

0

Meine Lösung dafür wäre, einen Container Ansicht und eine Seitenansicht Controller zu verwenden. Sie fügen eine Containeransicht hinzu und legen automatische Layoutbeschränkungen fest, um den Container zu dimensionieren. Fügen Sie dann alle Bilder einem Seitenaufruf-Controller im Inneren hinzu.

0

Wie Sie bereits wissen, können wir keinen UIViewController von UIView präsentieren. Um Ihr Problem zu lösen, müssen Sie die Ansicht von UIViewController im Fenster hinzufügen und die richtige Animation anzeigen.

Um diese Aufgabe auszuführen, haben wir einen guten Bibliotheksaufruf MJPopupViewController. Mit diesem können Sie einen UIViewController von UIView mit verschiedenen Übergangseffekten darstellen. Bibliothek: https://github.com/martinjuhasz/MJPopupViewController

Lassen Sie uns wissen, wenn Sie Probleme bei der Integration dieser Bibliothek haben.

Danke.