iOS UIButton图像contentMode在TouchUpInside上闪烁
Posted
技术标签:
【中文标题】iOS UIButton图像contentMode在TouchUpInside上闪烁【英文标题】:iOS UIButton image contentMode flickering on TouchUpInside 【发布时间】:2012-03-22 09:20:31 【问题描述】:如果我将 UIButton 图像的 imageView contentMode 设置为 UIViewContentModeScaleAspectFill
,我会遇到问题。
UIButton *imageButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
imageButton.imageView.contentMode = UIViewContentModeScaleAspectFill;
[imageButton setImage:[UIImage imageNamed:@"myImage.jpg"] forState:UIControlStateNormal];
[imageButton addTarget:self action:@selector(doSmth:) forControlEvents:UIControlEventTouchUpInside];
按钮内的图像已适当缩放以填充整个按钮区域。
点击/触摸按钮后,图像会调整大小(闪烁),就像它的 contentMode 设置为 UIViewContentModeScaleAspectFit
。
有谁知道在点击/触摸发生时如何消除这种闪烁?
谢谢!
【问题讨论】:
【参考方案1】:为什么要设置按钮的 imageView 的内容模式?您为指定状态设置的图像始终填充按钮的大小。所以你必须将按钮的框架大小设置为图像的大小,而不是设置imageView contentMode
闪烁可能是按钮的高亮显示。如果要设置自定义图像以突出显示,请使用以下代码:
[imageButton setImage:buttonHightlightImage forState:UIControlStateHightlighted]
【讨论】:
所以为高亮状态设置相同的图像:) 如果你这样做,当你按下按钮时,你会看到没有交互 或者换个说法:我希望contentMode和button正常时一样。 是的,我只是将图像设置为突出显示状态(正常状态没有图像),并且图像仅在触摸发生时显示。之后我为两种状态设置图像并且没有闪烁。但我不认为这是一个好主意。按钮也失去了它的触摸动画...... 但您不需要设置 contentMode。您有大小为 100x50 像素的图像,因此请创建帧大小为 100x50 像素的按钮,并且不要设置 contentMode 您可以为突出显示的状态创建另一个图像,其中包括“触摸动画”【参考方案2】:只需禁用/取消选中attributes inspector
中的highlighted adjusts image
imageButton
【讨论】:
以上是关于iOS UIButton图像contentMode在TouchUpInside上闪烁的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 中图像的缩放类型或 contentMode 不起作用