2017-01-30 2 views
0

런타임 중에 UIBarButtonItem 형식의 도구 모음 단추를 변경하려고하는 도로 충돌이 발생했습니다.도구 모음 단추 변경

주어진 텍스트보기에 대해 프로그래밍 방식으로 툴바를 만들었습니다. 버튼 이미지가 눌려 졌을 때 버튼 이미지를 바꾸고 싶습니다. 예를 들어 이미지에 토글이 있고 이미지가 토글되어있는 경우와 같습니다.

나는 설명 할 것이다 :

여기

내가 원하는 버튼으로 도구 모음을 만들

func configureToolbar(forTextView textView: UITextView) { 

    toolbar?.barStyle = UIBarStyle.default 
    toolbar?.items = [ 
     UIBarButtonItem.init(image: UIImage.init(named: "bold_unselected"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:))), 
     UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil), 
     UIBarButtonItem(title: "Italic", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapItalic(sender:))), 
     UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil), 
     UIBarButtonItem(title: "Underline", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.dismissKB))] 
    toolbar?.sizeToFit() 

    for (index,item) in (toolbar?.items?.enumerated())! { 
     item.tag = index 
    } 

    // Adds a view as a upper border line 
    let border = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 0.5)) 
    border.backgroundColor = UIColor.lightGray 
    toolbar?.addSubview(border) 

    // Configures the toolbar 
    toolbar?.backgroundColor = UIColor.white 
    toolbar?.barTintColor = UIColor.white 
    toolbar?.tintColor = UIColor.black 
    toolbar?.clipsToBounds = true 

    // Adds to the super view; 
    textView.inputAccessoryView = toolbar 
} 

여기에 굵은 버튼 기능 여기

func didTapBold(sender: UIBarButtonItem) { 

    typeface.isBold = typeface.isBold! ? false : true // true -> false -> true 
    toggleButton(button: sender, status: typeface.isBold!) 
} 

의 내가 원하는 곳이야 '상태'버튼을 켜기 위해 켜짐 - 꺼짐

func toggleButton(button: UIBarButtonItem, status: Bool) { 
    // changes the button appearance 
    switch button.tag { 
    case 0: 
     print("bold") 
     print("status \(status)") 
     if status { 
      button.image = UIImage.init(named: "bold_selected") 
     } else { 
      button.image = UIImage.init(named: "bold_unselected") 
     } 

    case 2: 
     print("bla bla bla") 

    case 4: 
     print("bla bla bla 2") 

    default: 
     print("default value called") 
    } 
} 

는 어떤 이유로, 내가하고 싶은에 이미지를 변경할 수 없습니다,하지만 난 다른 하나를 변경할 수 있습니다.

휴먼 인터페이스 가이드 라인을 읽었으며 툴바에 권장되는 이미지 크기를 찾을 수 없지만 검색 한 후 20x20 크기의 일부 웹 사이트를 읽은 후 다른 사람이 확인할 수 있습니까?

기본 이미지와 선택한 이미지가 있습니다.

unselected

selected

UPDATE 은 어떻게 든 내가 도구 모음에 어떤 색깔의 아이콘/이미지를 추가 할 수 없습니다 것 같다. 방금 다른 아이콘을 추가하려고했는데 방금 검은 점으로 나타났습니다.

+0

희망이 도움 그게 문제의 원인이야, 난 그렇게 생각하지 않아. –

+0

누구도 도와 줄 수 있습니까? :) –

답변

0

나는 해결책을 찾았으나 매우 간단하지만 쉽게 찾을 수 없었다.

컬러 아이콘/이미지를 툴바에 추가하려면 이미지를 추가 할 때 렌더링 모드 속성을 항상 원래로 설정해야합니다.

SE는해야 이제 코드를 수정 :

//when setting the toolbar icons 
toolbar?.items = [UIBarButtonItem.init(image: UIImage.init(named: "bold_unselected")?.withRenderingMode(.alwaysOriginal), style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:)))] 

또는

let img = UIImage(named: "image").withRenderingMode(.alwaysOriginal) 
let barBtnItm = UIBarButtonItem.init(image: img, style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:))) 

에 이미지를 인스턴스화 내가 알고하지 않습니다 내 이미지/아이콘 64 × 64이다가 BTW,

관련 문제