Ios button.setTitle清空图像视图

Ios button.setTitle清空图像视图,ios,swift,uiview,uiimage,Ios,Swift,Uiview,Uiimage,谁能告诉我为什么设置button.setTitle(string,forState)函数会清空UIImage 如果我注释掉使用button.setTitle的两行,动画运行良好。当线条出现时,当我按下按钮时,动画消失 var cryButton:UIButton和函数UpdateImage引用了同一个按钮,但我尝试添加第二个按钮并引用其中的标题,结果是相同的。它使图像变为空白 我被难住了:) 实际上,有一种更好的方法可以使用一组图像来设置UIImageView的动画,您可以尝试一下,然后删除计时

谁能告诉我为什么设置button.setTitle(string,forState)函数会清空UIImage

如果我注释掉使用button.setTitle的两行,动画运行良好。当线条出现时,当我按下按钮时,动画消失

var cryButton:UIButton和函数UpdateImage引用了同一个按钮,但我尝试添加第二个按钮并引用其中的标题,结果是相同的。它使图像变为空白

我被难住了:)


实际上,有一种更好的方法可以使用一组图像来设置
UIImageView
的动画,您可以尝试一下,然后删除计时器

babyImage.animationImages = @[image1,image2,image3,image4,image5,image6,image7,image8]
babyImage.animationDuration = 1.6 
// There are 8 images, so each image occupies 1.6 / 8 = 0.2 secs    
babyImage.startAnimating()
// Use babyImage.stopAnimating() to stop the animation

我终于找到了问题所在。这不是由计时器引起的,计时器完全正常。该问题是由设置按钮标题时调用的
viewdilayoutsubviews
引起的。您正在使用自动布局,并且您正在使用按钮的固有内容大小,对吗?由于两个标题的长度不同,因此当您设置标题时,按钮的框架将被更改,因此它将再次布局,然后将调用
viewdilayoutsubviews
。您在
viewdilayoutsubviews
内部设置了
imageView
的中心值,因此,基本上,当您设置标题时,图像将向左移动400点到其原始位置,我猜这是在屏幕外。请注意:如果图像大小不同,当您调用
imageView.image=UIImage(名为:“image.png”)
时,也将调用
viewdilayoutsubview
。我认为您使用的所有图像都具有相同的大小,这就是为什么当计时器运行时未调用
viewdilayoutsubviews
的原因。下面是一个很好的例子,解释了何时调用
viewdilayoutsubviews
。我会让你自己找出正确的解决办法,好吗?:)

谢谢你,埃里克。我将尝试替换该代码,看看是否仍然存在图像消隐的问题。你认为问题出在计时器上,还是我正在更改button.title而不是button.image?@Bendrix你必须使用button.titlelabel属性而不是button.title属性。嗨,Rahul,button.setTitle是一个函数,我正在尝试更改按钮的标题。button.tltleLabel是一个变量。我认为我无法从swift程序行设置它。我想我能得到它,但不能设定它。当我键入line button.titleLabel=“text”时,编译器会说无法分配到此表达式的结果。你有什么建议?哇!这是一种教育,我很感激。我在viewDidLayoutSubviews中注释掉了代码,现在按钮和图像工作正常。实际上,根本不需要做初始动画。
babyImage.animationImages = @[image1,image2,image3,image4,image5,image6,image7,image8]
babyImage.animationDuration = 1.6 
// There are 8 images, so each image occupies 1.6 / 8 = 0.2 secs    
babyImage.startAnimating()
// Use babyImage.stopAnimating() to stop the animation