这是一个卡片匹配游戏.每张卡在视图中表示为UIbutton.当卡片对象面朝上时,UIbutton处于选中状态,当卡片面朝下时,UIbutton处于默认状态.找到匹配后,也可以禁用卡.
作业要求将图像放在卡片的背面.换句话说,每个UIbutton都需要在处于默认状态时显示图像,但是当它处于选中或禁用状态时,它必须是Title属性.
看起来很简单……
首先,我在GUI(故事板)中尝试了这一点,将背景图像设置为我的图像,然后确保所选状态和禁用状态都没有图像.这导致图像显示,但随后标题文本显示在图像上.一些搜索找到了原因:除非明确告知,所以UIbutton默认所有其他UIControlStates为UIControlStatenormal.
现在我一直在努力让这个以编程方式工作,但仍然没有运气.所有作为卡的UIbutton都在IBOutletCollection中,这是一个NSArray(cardbuttons).在vIEwDIDLoad函数中,我有一个遍历所有按钮的for循环:
UIImage *cardBack = [UIImage makeSomeImage...];for (UIbutton *onebutton in cardbuttons) {[onebutton setBackgroundImage:cardBack forState:UIControlStatenormal];[onebutton setBackgroundImage:nil forState:UIControlStateSelected];}
这仍然给我同样的问题.它肯定是成功地将图像设置为默认状态,但是当我单击模拟器中的按钮时,图像保留,而标题只显示在它上面.
在GUI和编程方面,我可以得到一个不同的图像,以显示在选定和禁用状态罚款.我所要做的就是添加:
[onebutton setBackgroundImage:anotherImage forState:UIControlStateSelected];
循环和所有按钮在选择时显示其他图像.
我不能做什么,以及让我疯狂的是,在选择时试图让那里没有背景图像,以便UIbutton只显示标题……
编辑:
虽然不是一个理想的解决方案(我认为在UIbutton中使用imageVIEw属性可能会有所改变,但我不确定),我已经想出了一种有点强调的感觉方式来使这项工作.
首先,我将UIImage用于名为cardBackImage的类属性中.
然后,在每次对模型进行更改时循环遍历所有卡按钮的updateUI函数中,我添加了以下代码行:
[cardbutton setBackgroundImage:(oneCard.isFaceUp ? nil : self.cardBackImage) forState:UIControlStatenormal];
因此,每次卡片对象被“翻转”时,UIbutton必须将UIImage加载或卸载到其实例变量中. Bleh ……就像我说的那样,并不理想,但它确实有效.
解决方法 我知道这个问题已经发布很久了,但是我遇到了同样的问题,我发现 this answer到了另一个帖子. 总结以上是内存溢出为你收集整理的ios – UIButton – 默认状态下的图像,选定状态下的标题全部内容,希望文章能够帮你解决ios – UIButton – 默认状态下的图像,选定状态下的标题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)