【问题标题】:issue with changing UIButton background image更改 UIButton 背景图像的问题
【发布时间】:2011-09-25 05:47:49
【问题描述】:

我有以下代码,基本上只是初始化一个 UIButton。

self.button = [[UIButton alloc] init];
    self.button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
    self.button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
   [self.voteSpot setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self.voteSpot setBackgroundImage:[UIImage imageNamed:@"MainButton-Selected.png"] forState:UIControlStateSelected];
    [self.button addTarget:self action:@selector(button) forControlEvents:UIControlEventTouchUpInside];

    CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
    if (heightDifference < 0)
        self.button.center = self.tabBar.center;
    else
    {
        CGPoint center = self.tabBar.center;
        center.y = center.y - heightDifference/2.0;
        self.button.center = center;
    }

    [self.view addSubview:self.button];

当我按下按钮时,我希望更改按钮背景,因此在目标中我有以下内容:

- (void) button
{

    [self setSelectedViewController:[self.viewControllers objectAtIndex:1]];
    [self setTabBarWithImage:[UIImage imageNamed:@"Map-Profile.png"]];
}

问题是,当应用程序首次加载时,我必须按两次按钮才能更改背景。这是为什么呢?我第一次点击按钮时,这不会更改按钮背景图像。有什么想法吗?

【问题讨论】:

  • 如果我是对的,setBackgroundImage:forState: 方法是一种配置方法,因此在初始化 UIButton 时设置一次就足以更改所有声明状态的图像。此外,永远不要将 setter 与 alloc init 一起使用,它会进行双重初始化,从而导致泄漏,或者您可以设置一个自动释放 UIButton 以避免泄漏。 (self.button = [[[UIButton alloc] init] autorelease];
  • 您似乎在选择器中为UIControlStateNormal 设置“已选择”图像。默认的 UIButton 并没有任何选定的功能。你希望发生什么?
  • 所以当我点击时按钮的初始背景颜色是红色我希望它是蓝色和蓝色..

标签: iphone objective-c ipad uibutton


【解决方案1】:

我不确定问题出在哪里,但我会先使用+buttonWithType 而不是+alloc-init 创建按钮。 buttonType 属性是只读的,使用-init 初始化按钮不允许您设置类型。

【讨论】:

  • 我以前做过,但没有帮助
【解决方案2】:

您应该在用户点击按钮之前设置突出显示/选定的背景。换句话说,将前两行从操作方法移到您创建按钮的位置。

【讨论】:

  • 是的..我也这样做了,它仍然是一样的,必须点击两次按钮才能获得效果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多