코드에서 UIButton에 대한 이미지 설정
코드에서 UIButton의 이미지를 어떻게 설정합니까?
나는 다음을 가지고 있습니다.
UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self action:@selector(goToOne) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnTwo];
하지만 무엇이 그것에 대한 이미지를 설정할지는 알 수 없습니다.
목표-C
UIImage *btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setImage:btnImage forState:UIControlStateNormal];
스위프트 5.1
let btnImage = UIImage(named: "image")
btnTwo.setImage(btnImage , for: .normal)
Mike의 솔루션은 이미지만 표시하지만 제목이나 이미지를 설정할 수 있기 때문에 버튼에 설정된 제목은 표시되지 않습니다.
이미지와 제목을 모두 설정하려면 다음 코드를 사용합니다.
btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setBackgroundImage:btnImage forState:UIControlStateNormal];
[btnTwo setTitle:@"Title" forState:UIControlStateNormal];
이 작업을 수행하기 전에 이미지 프레임 크기를 기준으로 버튼 프레임의 크기를 명시적으로 조정해야 했습니다.
UIImage *listImage = [UIImage imageNamed:@"list_icon.png"];
UIButton *listButton = [UIButton buttonWithType:UIButtonTypeCustom];
// get the image size and apply it to the button frame
CGRect listButtonFrame = listButton.frame;
listButtonFrame.size = listImage.size;
listButton.frame = listButtonFrame;
[listButton setImage:listImage forState:UIControlStateNormal];
[listButton addTarget:self.navigationController.parentViewController
action:@selector(revealToggle:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *jobsButton =
[[UIBarButtonItem alloc] initWithCustomView:listButton];
self.navigationItem.leftBarButtonItem = jobsButton;
Swift 사용자의 경우
// case of normal image
let image1 = UIImage(named: "your_image_file_name_without_extension")!
button1.setImage(image1, forState: UIControlState.Normal)
// in case you don't want image to change when "clicked", you can leave code below
// case of when button is clicked
let image2 = UIImage(named: "image_clicked")!
button1.setImage(image2, forState: UIControlState.Highlight)
이렇게 하면 됩니다.
[btnTwo setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 150, 44);
[btn setBackgroundImage:[UIImage imageNamed:@"buttonimage.png"]
forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(btnSendComment_pressed:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
이미지는 다음 중 하나의 방법으로 배치할 수 있습니다.
UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self
action:@selector(goToOne)
forControlEvents:UIControlEventTouchUpInside];
[btnTwo setImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal];
//OR setting as background image
[btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"]
forState:UIControlStateNormal];
[self.view addSubview:btnTwo];
추가할 수 있는 솔루션을 찾고 있었습니다.UIImage
나에게UIButton
문제는 이미지를 필요 이상으로 크게 보여준다는 것입니다.도움이 되었습니다.
_imageViewBackground = [[UIImageView alloc] initWithFrame:rectImageView];
_imageViewBackground.image = [UIImage imageNamed:@"gradientBackgroundPlain"];
[self addSubview:_imageViewBackground];
[self insertSubview:_imageViewBackground belowSubview:self.label];
_imageViewBackground.hidden = YES;
표시할 때마다UIImageView
제가 방금 var를 세팅했습니다.hidden
로.YES
또는NO
다른 해결책이 있을 수도 있지만, 저는 이 문제에 대해 너무 자주 혼란스러워했고, 이것이 해결책이 되었고 내부 문제를 다룰 필요가 없었습니다.UIButton
백그라운드에서 하고 있습니다.
코드로 단추를 틀지 않아도 됩니다. 스토리보드에서 할 수 있습니다.저한테는 효과가 있었어요, 한 줄만...좀 더 단순한.
[self.button setBackgroundImage:[UIImage imageNamed: @"yourPic.png"] forState:UIControlStateNormal];
-(void)buttonTouched:(id)sender
{
UIButton *btn = (UIButton *)sender;
if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-Locked.png"]])
{
[btn setImage:[UIImage imageNamed:@"icon-Unlocked.png"] forState:UIControlStateNormal];
// other statements....
}
else
{
[btn setImage:[UIImage imageNamed:@"icon-Locked.png"] forState:UIControlStateNormal];
// other statements....
}
}
Swift 3 버전(butt_img는 Assets.xcassets 또는 Images로 설정된 이미지여야 합니다.Xcode의 xcassets 폴더):
btnTwo.setBackgroundImage(UIImage(named: "butt_img"), for: .normal)
btnTwo.setTitle("My title", for: .normal)
버튼 크기를 채우도록 이미지 크기를 조정하려면 다음을 추가할 수 있습니다.UIImageView
이미지를 지정합니다.
let img = UIImageView()
img.frame = btnTwo.frame
img.contentMode = .scaleAspectFill
img.clipsToBounds = true
img.image = UIImage(named: "butt_img")
btnTwo.addSubview(img)
신속한 5+용
let image = UIImage(named: "icons-multiply")?.withRenderingMode(.alwaysTemplate)
btn.setImage(image, for: .normal)
언급URL : https://stackoverflow.com/questions/1469474/setting-an-image-for-a-uibutton-in-code
'programing' 카테고리의 다른 글
alias 또는 alias_method를 사용해야 합니까? (0) | 2023.06.02 |
---|---|
고정 위치이지만 용기에 상대적임 (0) | 2023.06.02 |
Eclipse 텍스트 커서가 변경되었으며 편집기가 다르게 작동함 (0) | 2023.06.02 |
Active Directory에서 사용자 그룹을 가져오는 방법은 무엇입니까?(c#, asp.net ) (0) | 2023.06.02 |
셸 스크립트 읽기 마지막 줄이 누락됨 (0) | 2023.05.28 |