以编程方式在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上的文字没有显示。 如果我注释掉setImagebutton ,那么文本显示完美,否则不是。 我可以同时拥有文字和图片吗?

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) }