die Größe des Bildes auf Knopfgröße, und fügen Sie es als Hintergrundbild
func resizeImageWithAspect(image: UIImage,size: CGSize)->UIImage
{
let oldWidth = image.size.width;
let oldHeight = image.size.height;
let scaleFactor = (oldWidth > oldHeight) ? size.width/oldWidth : size.height/oldHeight;
let newHeight = oldHeight * scaleFactor;
let newWidth = oldWidth * scaleFactor;
let newSize = CGSizeMake(newWidth, newHeight);
if UIScreen.mainScreen().respondsToSelector(#selector(NSDecimalNumberBehaviors.scale)){
UIGraphicsBeginImageContextWithOptions(newSize,false,UIScreen.mainScreen().scale);
}
else
{
UIGraphicsBeginImageContext(newSize);
}
image.drawInRect(CGRectMake(0, 0, newSize.width, size.height));
let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Verwendung:
button.setBackgroundImage(resizeImageWithAspect(UIImage(data: data!)!,size:button.bounds.size), forState: .Normal);
button.contentMode = UIViewContentMode.ScaleAspectFit;
button.clipsToBounds = true;
Warnung an Ihrem Code Sie
schrieb
let url = NSURL(string: itemImageURL)
let data = NSData(contentsOfURL: url!)
Tun Sie dies in main thread
ist eine wirklich schlechte Idee! werfen Sie einen Blick auf die nächsten Code:
let url = NSURL(string: "https://abrahampacana.files.wordpress.com/2013/10/quabbin-11.jpg")
print(NSDate().timeIntervalSince1970) //1463505118
let data = NSData(contentsOfURL: url!)
print(NSDate().timeIntervalSince1970) //1463505138
diese Belastung
20 Sekunden
dieser 20 Sekunden ist war, dass die App klemmt und Benutzer warten, wenn nichts passiert, und nichts reagiert. sollten Sie zumindest Hintergrund-Thread verwenden
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)) {
//this is background thread
let url = NSURL(string: "https://abrahampacana.files.wordpress.com/2013/10/quabbin-11.jpg")
let data = NSData(contentsOfURL: url!)
//now return to main thread to update the view
//UI should always update from main thread
dispatch_async(dispatch_get_main_queue()){
button.setImage(...)
}
}
eine andere Lösung: NSURLSession
Sie Inhaltskante Einsatz von Taste für beide einstellen Titel und Bild können Sie festlegen, um Bild/Titel kleiner zu machen. –
Ich habe versucht und es scheint nicht die Größe des Bildes zu beeinflussen. Ich muss erwähnen, dass meine Taste ist so breit wie der Bildschirm und hat den Titel und das Bild zentriert – asheyla