2016-03-02 101 views
4

我曾尝试将圆形按钮放在iOS的右侧导航栏上,但不幸的是,当我使用按钮背景时,它不会将图像倒圆显示方形背景图像,但当我移除图像并将背景颜色放在背景颜色的圆形按钮上时。我试过 代码:如何在右侧导航栏上设置带有背景图像的圆形按钮项目

 let button = UIButton() 
     button.frame = CGRectMake(0, 0, 40, 40) 
     button.layer.cornerRadius = 0.5 * button.bounds.size.width 
     button.setImage(self.myPic, forState: .Normal)    
     let barButton = UIBarButtonItem() 
     barButton.customView = button 
     self.navigationItem.rightBarButtonItem = barButton 

回答

8

尝试使用此代码.. 为圆按钮,图像 -

let button = UIButton() 
button.frame = CGRectMake(0, 0, 40, 40) 
let color = UIColor(patternImage: UIImage(named: "btnImage")!) 
button.backgroundColor = color 
button.layer.cornerRadius = 0.5 * button.bounds.size.width 
let barButton = UIBarButtonItem() 
barButton.customView = button 
self.navigationItem.rightBarButtonItem = barButton 

实际图像---

let button = UIButton() 
    button.frame = CGRectMake(0, 0, 40, 40) 

    let image = UIImage(named: "btnImage")! 

    UIGraphicsBeginImageContextWithOptions(button.frame.size, false, image.scale) 
    let rect = CGRectMake(0, 0, button.frame.size.width, button.frame.size.height) 
    UIBezierPath(roundedRect: rect, cornerRadius: rect.width/2).addClip() 
    image.drawInRect(rect) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 


    let color = UIColor(patternImage: newImage) 
    button.backgroundColor = color 
    button.layer.cornerRadius = 0.5 * button.bounds.size.width 
    let barButton = UIBarButtonItem() 
    barButton.customView = button 
    self.navigationItem.rightBarButtonItem = barButton 
+0

基本上你应该创建一个图像的颜色来设置,然后设置按钮的背景颜色 –

+0

它的工作原理,但这也裁剪图像。我不想裁剪我的图像 –

+0

我有这个解决方案。我编辑了我的答案..如果这或我早期的解决方案解决您的问题,请检查此答案。 –

1

迅速2 设置栏中的圆形按钮

func setProfileImageOnBarButton() { 

    let button = UIButton() 
    button.setImage(profileImage, forState: UIControlState.Normal) 
    button.addTarget(self, action:#selector(self.openUserProfile), forControlEvents: UIControlEvents.TouchUpInside) 
    button.frame = CGRectMake(0, 0, 36, 36) 
    button.layer.cornerRadius = CGRectGetWidth(button.frame)/2 
    button.layer.masksToBounds = true 
    let barButton = UIBarButtonItem(customView: button) 
    self.navigationItem.rightBarButtonItem = barButton 

} 
+0

CGRectMake在swift 3中不存在。 –

+0

它只是在swift3上的CGRect –

相关问题