【问题标题】:UIButton appearing incorrectlyUIButton 显示不正确
【发布时间】:2020-10-30 09:34:48
【问题描述】:

我很难弄清楚如何使 UIButton 看起来正确。本质上,它应该是这样的:

UIButton 在情节提要中设置并具有适当的约束。然后,在代码中我试图专门为我的用例定制它。这是我方法中的代码:

- (void)setupSkipBreakButton
{
    NSString* buttonText = BMStringInApplicationLanguageForKey(skipIntroTextKey);;
    [self.skipBreak setTitle: buttonText forState: UIControlStateNormal];
    UIImage *skipBreak = [UIImage bm_imageWithBundlePath:BMVideoPlayerControlRackViewSkipBreakImageName];
    
    
    [self.skipBreak setTitleEdgeInsets:UIEdgeInsetsMake(3.0, 1.0, 3.0, 0.0)];
    [self.skipBreak setImageEdgeInsets:UIEdgeInsetsMake(3.0, 0.0, 3.0, 2.0)];
    [self.skipBreak setImage:skipBreak forState:UIControlStateNormal];
    self.skipBreak.backgroundColor = [[UIColor bm_colorWithHexString:BMVideoPlayerDefaultColor]
                                                   colorWithAlphaComponent:BMVideoPlayerDefaultAlpha];
    [self.skipBreak addTarget:self action:@selector(skipBreakButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
}

相反,按钮实际上在“Skip Intro”的左侧有 2 个右箭头,而根据上图它应该位于右侧。

我的代码中没有看到任何涉及定位图像而不是文本的内容(除了 UIEdgeInsets?)。所以,我不明白如何解决这个问题。

请帮忙?

【问题讨论】:

  • @koen 对不起?请详细说明?
  • 好吧,self.skipBreak 暗示它是一个实例变量。它是该类的 UIButton 对象。我很清楚该对象和 UIImage 对象之间的区别。

标签: ios objective-c uibutton


【解决方案1】:

这里是做你想做的事的代码。基本上你需要检查你在UIEdgeInsetsMake中传递的值。

 UIImage *skipBreak = [UIImage imageNamed:@"testpic.png"];
    [self.button setTitle:@"Tesst" forState:UIControlStateNormal];
    [self.button setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 0.0, 0.0, 30.0)];
    [self.button setImage:skipBreak forState:UIControlStateNormal];
    [self.button setImageEdgeInsets:UIEdgeInsetsMake(0.0, 0.0, 0.0, -57)];
    [self.button setBackgroundColor:[UIColor yellowColor]];

结果如下:

如果您仍然无法将图像设置为使用情节提要的最佳且简单的方法,我会建议您。

步骤:

  1. 在情节提要上添加一个按钮
  2. 在按钮中添加图片

现在使用这些选项并使用它们。最好的学习方式。

【讨论】:

  • 谢谢!我会对其进行测试并回复您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2019-07-19
  • 2018-06-11
相关资源
最近更新 更多