Ich erstelle ein System von Filtern.Swift - Button Image + Padding unten
Derzeit verwende ich die setBackgroundImage func, und ich habe nicht dieses kleine rect unter dem Bild ...
filterButton.setBackgroundImage(imageForButton, for: .normal)
I versucht, Funktionen wie diese:
filterButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 20, right: 0)
Aber es ist nicht wirksam, wenn ich die setBackgroundImage func halten ...
Wenn ich setImage() verwenden, die Ergebnisse sind gut, aber der Klick ist nicht mehr wirksam ...
filterButton.setImage(imageForButton, for: UIControlState.normal)
Haben Sie eine Idee haben, was ich möchte?
Vielen Dank im Voraus!
Der vollständige Code-Schnipsel:
for i in 0 ..< CIFilterNames.count {
itemCount = i
// Button properties
let filterButton = UIButton(type: .custom)
// filterButton.frame = CGRectMake(xCoord, yCoord, buttonWidth, buttonHeight)
filterButton.frame = CGRect(x: xCoord, y: yCoord, width: buttonWidth, height: buttonHeight)
filterButton.tag = itemCount
filterButton.addTarget(self, action: #selector(self.filterButtonTapped(_:)), for: .touchUpInside)
// filterButton.layer.cornerRadius = 6
// filterButton.clipsToBounds = true
let ciContext = CIContext(options: nil)
let coreImage = CIImage(image: originalImage.image!)
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.backgroundColor = UIColor.red
filterButton.setImage(imageForButton, for: UIControlState.normal)
//filterButton.imageEdgeInsets = UIEdgeInsets(top: 0,left: 0,bottom: 15,right: 0)
//filterButton.setBackgroundImage(imageForButton, for: .normal)
filterButton.setTitle("A\(i)", for: .normal)
// filterButton.backgroundImage.contentMode = .scaleAspectFill
filterButton.setTitleColor(UIColor(red: 22/255, green: 21/255, blue: 22/255, alpha: 1), for: .normal)
filterButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 20, right: 0)
filterButton.titleEdgeInsets.top = 140
// Add Buttons in the Scroll View
xCoord += buttonWidth + gapBetweenButtons
filtersScrollView.addSubview(filterButton)
}
Sind das Bild und die Filtertaste zwei separate Elemente? Können Sie ein größeres Code-Snippet teilen? – Stephen
Danke für Ihre Antwort, und ja, es sind zwei verschiedene Elemente. Ich bearbeitet meine Frage mit mehr Code (es ist eine Funktion, mehrere Tasten zu zeigen) – KevinB