2016-03-02 2 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 set bar в круге

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

Его просто CGRect на swift3 –

Смежные вопросы