【问题标题】:UIButton background VS UIButton imageview.viewUIButton 背景 VS UIButton imageview.view
【发布时间】:2012-02-02 12:28:30
【问题描述】:

UIButton 背景和 UIButton imageview.view 有什么区别 我试过myButton.imageView.image=[UIImage imageNamed:@"image.png"]; 然后什么也没发生,但是当我使用[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 按钮的背景发生变化。

谢谢!

【问题讨论】:

    标签: iphone objective-c ios uibutton


    【解决方案1】:

    myButton.imageView.image 是只读属性,因此不能像这样更改。而 setBackgroundImage 是一个正确设置背景的方法。

    //编辑

    UIButton 的 setImage 方法需要两个参数,

    setImage:(UIImage *) forState:(UIControlState)
    

    因此使用上述方法可以正常工作,而其他方法则不行。

    【讨论】:

    • @Tough Guy 如果它是只读属性,那么它会报错。
    【解决方案2】:

    UIButtonimageView 不表示背景图像。标题旁边显示的是图像视图。 因此,如有必要,将始终创建 imageView。如果在创建之前设置了yourButton.imageView.image,则没有任何内容可以显示,因为imageView 为nil。

    所以 UIButton 有状态 (UIControlState) 来控制、创建或删除背景图像视图和 imageView 在状态之间变化时。 (也是标题)

    请查看UIButton 的文档:http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html

    您将看到两种不同的图像处理方法

    – setBackgroundImage:forState:
    – setImage:forState:
    

    【讨论】:

      【解决方案3】:
      [myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
      [myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateHighlighted];
      

      当你调用当前的ImageView时,它会返回选中状态的背景图片

      不同的统计数据被突出显示/选择/禁用

      【讨论】:

      • 其实你说的我试过了,看起来合乎逻辑,但是它并没有给我“选中状态背景图”,你试过了吗?
      【解决方案4】:

      @Tough Guy 是正确的 - UIButton 的 imageView 具有只读属性。所以不能直接通过访问imageView的图片来设置图片。

      @property(nonatomic,readonly,retain) UIImageView *imageView   __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
      

      使用方便的方法

      [UIButtonInstance setImage:imageName forState:buttonState];
      

      【讨论】:

      • imageView 是只读的。这意味着您不能更改按钮的 imageView。但是imageView的image属性不是只读的,所以可以设置imageView的图片没有任何问题。
      • @MatthiasBauch 由于 ImageView 是只读属性,因此您不能为 UIButton 分配或分配 imageView。 [UIButtonInstance setImage:imageName forState:buttonState]期间只有UIButton分配UIImageView;所以你永远不能将图像分配给 UIButtonInstance.imageView
      • @Dhilip,这实际上不是真的。 ImageView 是只读的,但就像 Matthias Bauch 所说,它的图像属性是 not,因此可以通过使用 UIButtonInstance.imageView.image 甚至 [UIButtonInstance.imageView setImage:image]; 来更改。
      猜你喜欢
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2012-06-25
      • 2012-09-19
      相关资源
      最近更新 更多