如何在客观c的圆角上放置uibarbuttonitem的轮廓图像?

ini*_*iOS 0 objective-c uinavigationbar uibarbuttonitem uinavigationitem ios8.3

我想制作带圆角的UIbarbuttonItem(右侧).我提到的链接实现仍然没有得到.图像来自URL.我的代码是,

 dispatch_async(dispatch_get_global_queue(0,0), ^{

 NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL   URLWithString:userImage]];
    if ( data == nil )
        return;
    dispatch_async(dispatch_get_main_queue(), ^{
        // WARNING: is the cell still using the same data by this point??
        UIImage *img = [UIImage imageWithData: data];

        UIImage *btnImage = [self imageWithImage:img scaledToSize:CGSizeMake(50, 50)];
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        // btn.bounds = CGRectMake( 0, 0, btnImage.size.width, btnImage.size.height );
        [btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchDown];
        [btn setImage:btnImage forState:UIControlStateNormal];
        UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
        self.navigationItem.rightBarButtonItem = btnItem;
    });

});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 我需要实现与图像相同的功能.我做错了什么,请有人帮我解决这个问题.

bro*_*inc 8

这是oxigen的(优秀)答案转换为Swift 3/Swift 4:

override func viewDidLoad()
{
    super.viewDidLoad()

    let url = URL(string: "http://i.stack.imgur.com/EbYBY.jpg")!
    let data = try! Data(contentsOf: url)
    let img = UIImage(data: data)
    let imageView = UIImageView(frame: CGRect(x: 0.0, y: 0.0, width: 40.0, height: 40.0))
    imageView.image = img?.withRenderingMode(.alwaysOriginal)
    imageView.layer.cornerRadius = 20.0
    imageView.layer.masksToBounds = true
    let barButton = UIBarButtonItem(customView: imageView)
    navigationItem.setLeftBarButton(barButton, animated: false)
}
Run Code Online (Sandbox Code Playgroud)

(给定的URL现在已经死了,但是使用正确的URL或其他图像,代码应该可以工作.)