Nice programing

initWithImage : (UIImage *) image를 사용하여 UIBarButtonItem에 이미지 추가

nicepro 2020. 12. 9. 21:45
반응형

initWithImage : (UIImage *) image를 사용하여 UIBarButtonItem에 이미지 추가


UIBarButtonItem을 만들 때 InitWithImage를 사용하여 이미지를 UIBarButtonItem에 설정 한 다음 UIToolbar에 추가하는 방법을 알고 싶습니다.

다음을 수행하고 있지만 이미지가 UIToolbar에 있어야하는 곳에 빈 공백을 만듭니다.

UIImage *image = [UIImage imageNamed:@"6.png"];

UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(pp:)];

감사합니다!


다음은 Facebook 로고에서 도구 모음 버튼을 만드는 예입니다. 이미지 (xCode에 이미 추가 된 파일)에 대한 포인터 만들기, 사용자 지정 단추 만들기, 이미지에 맞게 단추 크기 변경, 단추 이미지 설정, 단추보기에서 도구 모음 단추 만들기.

UIImage *faceImage = [UIImage imageNamed:@"facebook.png"];
UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
face.bounds = CGRectMake( 0, 0, faceImage.size.width, faceImage.size.height );
[face setImage:faceImage forState:UIControlStateNormal];
UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];

iOS 7 이상에서는 다음을 수행합니다.

목표 -C

 UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
 UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];

스위프트 2.3

 let image = UIImage(named: "myImage")?.imageWithRenderingMode(.AlwaysOriginal)
 let button = UIBarButtonItem(image: image, style: .Plain, target: self, action: #selector(YOUR_METHOD(_:)))

스위프트 3.0

let image = UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal)
let button = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(YOUR_METHOD(_:)))

나는 설정하려고

UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image.png"] style:UIBarButtonItemStylePlain target:self action:@selector(pp:)];

로부터 UIBarButtonItem의 문서 :

막대에 표시된 이미지는이 이미지에서 파생 된 것입니다. 이 이미지가 너무 커서 막대에 맞지 않으면 크기가 조정됩니다. 일반적으로 도구 모음 및 탐색 모음 이미지의 크기는 20 x 20 포인트입니다. 소스 이미지의 알파 값은 이미지를 만드는 데 사용되며 불투명 한 값은 무시됩니다.

즉, UIBarButton 항목은 이미지의 색상을 무시하고 현재 막대 스타일에 따라 색상을 다시 지정합니다. 이미지를 표시하는 유일한 방법은 다양한 알파 값을 사용하여 이미지를 그리는 경우입니다. 이미지의 모든 픽셀은 알파 값이 1이기 때문에 모두 최대 밝기로 그려지고 공백이 생깁니다.


에서 스위프트 :

첫 번째 솔루션

let img = UIImage(named: "picture")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItemStyle.Plain, target: self, action: nil)
self.navigationItem.leftBarButtonItem = leftBarButtonItem

두 번째 솔루션

let img = UIImage(named: "picture")!
let imgWidth = img.size.width
let imgHeight = img.size.height
let button = UIButton(frame: CGRect(x: 0, y: 0, width: imgWidth, height: imgHeight))
button.setBackgroundImage(img, forState: .Normal)
button.addTarget(self, action: nil, forControlEvents: UIControlEvents.TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)

바 버튼 항목을 만든 후 다음을 수행하십시오.

systemItem1.image = [systemItem1.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

나도이 문제가 있었고 알파 채널이있는 png 파일을 사용하여 해결했습니다. 나는 빠른 목업을 시도하고 버튼의 기본 색상 인 배경에 jpg 파일이있는 뒤로 버튼을 추가했습니다. 흰색 직사각형이 있습니다. 그러나 투명한 배경에 화살표를 만들어 png 파일로 저장하면 작동했습니다.


UIBarbuttonItem initWithImage는 지정된 이미지로 막대 버튼을 만들지 않습니다. 주어진 이미지를 사용하여 UIBarbutton의 패턴을 생성합니다. 지정된 이미지가 투명하지 않으면 이미지 크기를 가진 지정된 색조가있는 바 버튼이 표시됩니다. 이미지에 불투명 한 부분이 있으면 기본 UIBarButtonSystemItemBookmarks와 같이 불투명 한 부분에 틴트 색상이 채워지며, 테두리가 불투명하고 안쪽이 투명합니다.

귀하의 경우에는 titncolor가 흰색이므로 흰색으로 표시됩니다.


나는 당신과 같은 코드를 작성할 것입니다. 프로젝트에 이미지를 추가 할 때 해당 이미지 가 빌드 대상에 추가되었는지 확인하십시오 .


당신은 만들 수 있습니다 UIBarButtonItem시스템 표준 아이콘 사용
- initWithBarButtonSystemItem:target:action:

예를 들면 :

[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRewind target:self action:@selector(YOUR_METHOD:)];

참고 URL : https://stackoverflow.com/questions/3300527/add-image-to-uibarbuttonitem-using-initwithimageuiimage-image

반응형