2016-12-21 2 views
0

Ich erstelle dynamisch eine scrollView und habe ein Seitensteuerelement damit verbunden. Ich habe ein Array von Schaltflächen, und diese Schaltflächen werden der Scroll-Ansicht dynamisch hinzugefügt.Während die Schaltflächen thats sind in der ersten Seite hinzugefügt werden sichtbar, einige Schaltflächen sind nicht sichtbar, aber sie werden der Scroll-Ansicht hinzugefügt.UIButton nicht sichtbar in UIScrollView mit UIPageControl - Swift 3

UIScrollView frame = CGRect (x: 0, y: 0, Breite: 340, Höhe: 150) scrollView.contentSize = CGSize (Breite: scrollView.frame.size.width * CGFloat (Seite), Höhe: Scroll .frame.size.height)

In meinem Fall habe ich 2 Seiten, also die Breite des Inhalts ist 680. Beim Scrollen der Ansicht ist der Inhalt Offset der Bildlaufansicht 340, obwohl die Schaltflächen unsichtbar sind sind innerhalb der contentSize, die Tasten sind immer noch nicht sichtbar,

Folgende sind die Frames der Schaltfläche, die nicht sichtbar sind,

<UIButton: 0x7ffdf0f26bb0; frame = (355 10; 62 32); opaque = NO; layer = <CALayer: 0x610000030840>>, 
<UIButton: 0x7ffdf0f27110; frame = (427 10; 98 32); opaque = NO; layer = <CALayer: 0x610000030960>>, 
<UIButton: 0x7ffdf0f27670; frame = (535 10; 112 32); opaque = NO; layer = <CALayer: 0x610000030a80>> 

Soweit Seitenkontrolle betrifft, sehe ich das gleiche Verhalten in der Scrollview, auch wenn ich die Seitensteuerung entfernen. Ich bin mir nicht sicher, ob ich nach etwas Bestimmtem auf dem scrollview überprüfen muss.

@IBAction func changePage(sender: UIPageControl) ->() { 
     let x = CGFloat(pageControl.currentPage + 1) * scrollView.frame.size.width 
     scrollView.setContentOffset(CGPoint(x: x,y :scrollView.frame.size.height), animated: true) 
    } 

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
     let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
     pageControl.currentPage = Int(pageNumber) 
    } 

Antwort

0

Die Probleme, die nicht mit dem Seitensteuerung oder Scroll war, war ich eine Verlängerung mit Ecken des Scroll abzurunden, die dieses Problem verursacht wurde,

Erweiterung UIView {

func roundCorners(corners:UIRectCorner, radius: CGFloat) { 
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 
    let mask = CAShapeLayer() 
    mask.path = path.cgPath 
    self.layer.mask = mask 
}} 

I verstehe immer noch nicht, warum das Hinzufügen der Maske zur Ebene die scrollView verfälscht hat.

Verwandte Themen