通常我们会需要这样的效果, 然后就会想到用一个按钮来做,
假设我们需要在一个rect的位置响应点击事件, 然后在这里初始化一个按钮, 设置按钮的图片。
按钮的superview上有一个图片,按钮本身又有一个图片。点击前按钮是不可见的, 当按钮从最大化显示完成后,再次点击将缩小到原来尺寸。
所以我们有以下方案:
1。 在响应点击事件的位置rect生成一个按钮, 并设定一个图片, 然后设置它的透明度或者hidden属性, 在点击事件中,判断当前是应该放大还是缩小,来完成整个过程。
但是在实际实现中,发现,如果设置透明度低于0.1时, 该按钮几乎就不可见了, 同时也响应不了点击事件, 更不用说把hidden设置成YES了。
但如果把透明度设置成0.1时, 用户没有点击时,会看到有一个0.1透明度的按钮在背景图上面, 看着不好,有种界面不干净的感觉。
所以我们需要采用方案2:
在rect生成一个按钮, custom类型的,并且不设置图片, 这个时候它就是一个透明的,且可以响应点击的按钮。
在该按钮的响应方法中,生成一个新的按钮,让生成的按钮直接在rect位置放大至全屏,并使其alpha从0.0变成1.0, 并给这个新加的按钮添加点击事件,事件中添加移除新加按钮的操作,就完成该效果。
运行时发现,当按钮放大后,再次点击时,会有一个点下的效果(即变暗的效果), 可以设置按钮的adjustsImageWhenHighlighted属性为NO, 即可解决这个问题。