以编程方式在UIButton上设置图像和文字
我需要创buildbutton编程方式与正常和突出显示的状态以及文本的图像。 我不能使用Interface Builder来构build它,因为我需要在UIScrollView
上创buildbutton。 这是我到目前为止的代码:
- (void)loadView { CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame]; scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect]; scrollView.contentSize=CGSizeMake(320,960); UIImageView *tempImageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.jpeg"]]; UIImage * buttonImage = [UIImage imageNamed:@"contentlist_active.png"]; self.view=scrollView; [scrollView addSubview:tempImageView2]; btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(22, 100, 277, 32); [btn setImage:buttonImage forState:UIControlStateNormal]; [btn setTitle:@"hello world" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [scrollView addSubview:btn]; }
但button上的文字没有显示。 如果我注释掉setImage
的button
,那么文本显示完美,否则不是。 我可以同时拥有文字和图片吗?
UIButtons setImage将图像设置在标题上方,因此您将无法看到它下面的文本。 所以尝试用setBackgroundImage设置图像到你的button。
Objective-C的:
[btn setBackgroundImage:buttonImage forState:UIControlStateNormal];
迅速:
myButton.setBackgroundImage(buttonImage, forState: UIControlState.Normal)
你在那里犯了一个错误,你在做
[btn setBackgroundImage:buttonImage forState:UIControlStateNormal];
代替
[btn setImage:buttonImage forState:UIControlStateNormal];
这将工作正常。
你有没有尝试过
[btn setBackgroundImage:buttonImage forState:UIControlStateHighlighted];
这可能会解决你的问题。
var menuButton:UIButton? override func viewWillAppear(animated: Bool) { menuButton = UIButton(frame: CGRectMake(0,0,30,30)) menuButton?.setBackgroundImage(UIImage(named: "menu.png"), forState: UIControlState.Normal) }