2017-11-07 2 views
0

이미지를 설정하지 않고 UIButton에서 이미지 뷰의 배경색을 변경하려면 어떻게해야합니까? (예를 들어 버튼 텍스트 옆에 빨간색 사각형이 표시되도록).UIButton : 이미지 뷰의 배경 설정 (이미지 설정없이)

단순히 mybutton.imageView.backgroundColor = UIColor.red으로 설정하고 이미지보기의 제약 조건을 28x28px으로 설정하면됩니다. 붉은 색 사각형이 보이지 않습니다.

감사합니다.

명확히하기 : UIButton의 이미지보기에만 배경색을 설정하고 싶습니다. 전체 버튼의 색상을 지정하고 싶지 않습니다!

+0

예를 들어 https://stackoverflow.com/questions/41545599/how-to-change-tintcolor-of-image-in-uibutton-with-imageedgeinsets를 참조하십시오. –

+1

@Pascal 완벽한 해결책은 아니지만 추가해볼 수 있습니다. 텍스트 및 이미지 내부 UIView 및 빈 UIButton 추가합니다. –

+0

투명한 이미지를 버튼으로 설정하면 작동합니다 .... –

답변

1

SwiftObjective-C으로 질문을 태그했습니다.

스위프트, 당신은 특정 색상으로 "빈"이미지를 만들려면이 확장을 사용할 수 있습니다

public extension UIImage { 
    public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) { 
     let rect = CGRect(origin: .zero, size: size) 
     UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) 
     color.setFill() 
     UIRectFill(rect) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     guard let cgImage = image?.cgImage else { return nil } 
     self.init(cgImage: cgImage) 
    } 
} 

을 다음, 추가 "빨간색 사각형을 옆에있는 버튼 텍스트에"

let btnImage = UIImage(color: .red, size: CGSize(width: 28, height: 28)) 
    btn.setImage(btnImage, for: .normal) 
당신의 Obj-C에서이 작업을 수행해야하는 경우

, 같은 프로세스의 :

- (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)sz { 
    CGRect rect = CGRectMake(0.0f, 0.0f, sz.width, sz.height); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetFillColorWithColor(context, [color CGColor]); 
    CGContextFillRect(context, rect); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 

UIImage *btnImage = [self imageWithColor:[UIColor redColor] andSize:CGSizeMake(28.0, 28.0)]; 
    [_btn setImage:btnImage forState:UIControlStateNormal]; 

참고 : UIButton 유형 Custom로 설정하거나, 이미지가 "착색"될 것입니다 있는지 확인합니다.

+0

네, 다른 언어로 쉽게 번역 할 수 있기 때문에 나는 두 언어로 태그를 달았습니다. 그리고 그들 중 하나에 대한 답변도 괜찮을 것입니다. :) 응답 해 주셔서 감사합니다. 실제로이 작업을 수행 할 수있는 옵션이없는 것 같습니다. 이미지를 설정하기 때문에, 당신의 접근 방식과 같은 * 의사 이미지 *를 사용하는 것이 최선의 접근 방식 인 것 같습니다. – Pascal

0
Use this code. 
UIButton *button =[[UIButton alloc]initWithFrame:CGRectMake(85, 290,110,20)]; 
button.layer.cornerRadius = ROUND_BUTTON_WIDTH_HEIGHT/2.0f; 
button.backgroundColor = [UIColor redColor]; 
button.titleLabel.textAlignment = NSTextAlignmentCenter; 
button.titleLabel.font = [UIFont systemFontOfSize:11.0]; 
[button setTitle:@"Download" forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(downloadBtnClicked:)forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 
+1

그는 버튼이 아니라 이미지 뷰의 배경색을 변경하려고합니다. –

0

당신은 당신의 자신의 주문있는 UIButton을해야한다. 또 다른 해결책은 IB 사용 가능한 옵션을 사용하여 기본값을 조정하는 것입니다.

UIButton Image + Text IOS

0

있는 UIButton _button * = [있는 UIButton buttonWithType : UIButtonTypeCustom];

[_button setFrame : CGRectMake (0.f, 0.f, 128.f, 128.f)]; // 원하는대로 값을 설정하십시오.

[_button setCenter : CGPointMake (128.f, 128.f)]; // 원하는대로 값을 설정하십시오.

[_button setClipsToBounds : false];

[상태 : UIControlStateNormal] [_button setBackgroundImage : [UIImage imageNamed : @ "jquery-mobile-icon.png"]; // 원하는대로 이미지 이름을 설정하십시오.

[_button setTitle : @ "Button"forState : UIControlStateNormal];

[_button.titleLabel setFont : [UIFont systemFontOfSize : 24.f]];

[_button setTitleColor : [UIColor blackColor] forState : UIControlStateNormal]; // 원하는대로 색상을 설정하십시오.

[_button setTitleColor : [UIColor redColor] forState : UIControlStateHighlighted]; // 원하는대로 색상을 설정하십시오.

[_button setTitleEdgeInsets : UIEdgeInsetsMake (0.f, 0.f, -110.f, 0.f)]; // 원하는대로 값을 설정하십시오.

[_button addTarget : 자기 동작 : @selector (buttonTouchedUpInside :) forControlEvents : UIControlEventTouchUpInside]; // 버튼에 작업을 추가 할 수 있습니다.