UIButton中的图像颜色被遮盖为背景颜色

时间:2016-02-08 11:14:58

标签: ios objective-c uibutton

我有UIButton,应该有白色图像和蓝色背景。问题是,图像的颜色被背景颜色掩盖并变成白色蓝色。  This是它应该是什么样子,this就是我得到的(忽略背景颜色的差异)。这是我设置图像的代码:

- (UIButton *)navButton
{
    if (_navButton == nil) {

        UIButton *navButton = [UIButton buttonWithType:UIButtonTypeCustom];
        navButton.translatesAutoresizingMaskIntoConstraints = NO;

        [navButton setBackgroundColor:[UIColor appBlue]];
        [navButton setImage: [UIImage imageNamed:@"car_icon"] forState:UIControlStateNormal];
        [navButton setEnabled:NO];

        _navButton = navButton;
    }
    return _navButton;
}

2 个答案:

答案 0 :(得分:3)

您可以使用此

override func viewDidLoad() {
    super.viewDidLoad()


    // Get the item[s] we're handling from the extension context.

    // For example, look for an image and place it into an image view.
    // Replace this with something appropriate for the type[s] your extension supports.
    var imageFound = false
    for item: AnyObject in self.extensionContext!.inputItems {
        let inputItem = item as! NSExtensionItem
        for provider: AnyObject in inputItem.attachments! {
            let itemProvider = provider as! NSItemProvider
            if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {
                // This is an image. We'll load it, then place it in our image view.
                weak var weakImageView = self.imageView
                itemProvider.loadItemForTypeIdentifier(kUTTypeImage as String, options: nil, completionHandler: { (image, error) in
                    NSOperationQueue.mainQueue().addOperationWithBlock {


                        if let strongImageView = weakImageView {

                            if let imageURL = image as? NSURL{
                                strongImageView.image = UIImage(data: NSData(contentsOfURL: imageURL)!)
                            }else{

                strongImageView.image = image as? UIImage
                            }
                        }

                    }
                })

                imageFound = true
                break
            }
        }

        if (imageFound) {
            // We only handle one image, so stop looking for more.
            break
        }
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func done() {
    // Return any edited content to the host app.
    // This template doesn't do anything, so we just echo the passed in items.
    self.extensionContext!.completeRequestReturningItems(self.extensionContext!.inputItems, completionHandler: nil)
}

答案 1 :(得分:1)

只需设置背景图片而不是按钮图片

[navButton setBackgroundColor:[UIColor appBlue]];
[navButton setBackgroundImage: [UIImage imageNamed:@"car_icon"] forState:UIControlStateNormal];
[navButton setEnabled:NO];

希望这可以帮助您解决这个问题。