2016-12-12 4 views
1

Ich bin neu zu schnell und ich lerne die Sprache mit dem Erstellen einer Instagram Art von App. Ich habe ein Problem mit den Filtern. Wenn ich es auf dem Simulator laufe, funktioniert alles gut außer dem Scrollview. Es sollte alle Filter anzeigen, wie es auf der Instagram-App ist. aber es zeigt nur 1 Filter (der letzte von CIFilternames) wie kann ich die anderen Filter als eine Schaltfläche neben der, die es gibt?Hinzufügen von "Filter" Schaltflächen zu Scrollview

in the Scrollview should be more filters than one

var CIFilterNames = [ 
    "CIPhotoEffectChrome", 
    "CIPhotoEffectFade", 
    "CIPhotoEffectInstant", 
    "CIPhotoEffectNoir", 
    "CIPhotoEffectProcess", 
    "CIPhotoEffectTonal", 
    "CIPhotoEffectTransfer", 
    "CISepiaTone", 
    "CIPhotoEffectInstant", 
     ] 




override func viewDidLoad() { 
    super.viewDidLoad() 


    imageview.image = receivedImage 

    var xCoord: CGFloat = 5 
    let yCoord: CGFloat = 10 
    let buttonWidth:CGFloat = 70 
    let gapBetweenButtons: CGFloat = 5 

    var itemCount = 0 

    for i in 0..<CIFilterNames.count { 
     itemCount = i 

     // Button properties 
     let filterButton = UIButton(type: .custom) 
     filterButton.frame = CGRect(x: 5, y: 10, width: 70, height: 70) 
     filterButton.tag = itemCount 
     filterButton.addTarget(self, action: #selector(secendTestViewController.filterButtonTapped(sender:)), for: .touchUpInside) 
     filterButton.layer.cornerRadius = 6 
     filterButton.clipsToBounds = true 




     // Create filters for each button 
     let ciContext = CIContext(options: nil) 
     let coreImage = CIImage(image: receivedImage) 
     let filter = CIFilter(name: "\(CIFilterNames[i])") 
     filter!.setDefaults() 
     filter!.setValue(coreImage, forKey: kCIInputImageKey) 
     let filteredImageData = filter!.value(forKey: kCIOutputImageKey) as! CIImage 
     let filteredImageRef = ciContext.createCGImage(filteredImageData, from: filteredImageData.extent) 
     let imageForButton = UIImage(cgImage: filteredImageRef!); 

     filterButton.setBackgroundImage(imageForButton, for: .normal) 

     // Add Buttons in the Scroll View 
     xCoord += buttonWidth + gapBetweenButtons 

     filterScrollView.addSubview(filterButton) 
    } // END FOR LOOP 

    // Resize Scroll View 
    filterScrollView.contentSize = CGSize(buttonWidth * CGFloat(itemCount + 2), yCoord) 


    } 



func filterButtonTapped(sender: UIButton) { 
    let button = sender as UIButton 

    imageToFilter.image = button.backgroundImage(for: UIControlState.normal) 
} 
+0

Ich glaube, Sie brauchen filterButton.frame –

+0

Set CGRect (x: xKoord, y: 10, Breite: 70, Höhe: 70) ändern –

+0

Warum Sie eine 'UICollectionView' nicht stattdessen verwenden ? Es ist für den Zweck entworfen, den Sie erreichen möchten! – Rikh

Antwort

2

denke ich Ihr Problem filterButton Rahmen ist. versuchen diese

filterButton.frame = CGRect(x: xCoord, y: 10, width: 70, height: 70) 
+0

Vielen Dank !!! du hast meinen Tag gerettet! Ich habe versucht, dieses Problem seit 2 Tagen zu lösen! Ich verstehe meinen Fehler jetzt LOL Danke! –

+0

Ich bin froh, Ihnen zu helfen –

Verwandte Themen