版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2018.08.08 |
前言
做了好幾個APP,碰到了大大小小的很多坑,以前碰到坑,解決了就結束了,這里想把自己碰到的坑記錄下來,一來給自己備查二來希望可以幫助到大家。感興趣的可以關注下,也歡迎大家補充留言,感興趣的看上面幾篇文章。
1. 我的代碼我的坑(一) —— 自簽名證書導致請求取消的問題(一)
問題描述
在做loading或者其他序列幀動畫的時候,我們可以采用的一個方案就是在控件UIImageView上直接進行動畫。
有一個場景就是如果該UIImageView向上傳遞的響應鏈中如果有tableview或者collectionview等控件,那么當我們UIImageView在進行動畫的時候,如果點擊界面,那么UIImageView的動畫就會立即停止圖片也會消失,具體如下圖所示。
這里根視圖是一個collectionview,當我點擊這個界面的時候UIImageView動畫停止并且消失了,這是為什么?下面會給出解決方法。
問題解決
原因
首先說一下原因吧。
這個是因為我們向上的響應鏈中有tableview或者collectionview等控件,當我們點擊界面的時候,它們就會響應自己的highlight狀態,而一般我們利用UIImageView做動畫的時候,只是給賦值一個序列幀數組,不會設置什么hightlight狀態,所以在hightlight狀態的時候,UIImageView的動畫圖片會立即消失,本身如果不設置hightlight對應的圖片的話也會直接隱藏掉,所以,給大家的直觀感覺就是:當我點擊界面的時候動畫和控件全部消失了。
解決辦法
這里有兩個方法可以解決這個問題:
- 給UIImageView設置highLight圖片數組,在點擊界面的時候,重新調用
startAnimating
的方法。
- 重寫UICollectionview的一個代理方法,并返回NO,其實這個方法就是取消了cell的highLight點擊狀態。
- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
return NO;
}
大家如果細心的看API會發現,里面已經給了這個點擊的過程,這些代理方法的調用順序。
// Methods for notification of selection/deselection and highlight/unhighlight events.
// The sequence of calls leading to selection from a user touch is:
//
// (when the touch begins)
// 1. -collectionView:shouldHighlightItemAtIndexPath:
// 2. -collectionView:didHighlightItemAtIndexPath:
//
// (when the touch lifts)
// 3. -collectionView:shouldSelectItemAtIndexPath: or -collectionView:shouldDeselectItemAtIndexPath:
// 4. -collectionView:didSelectItemAtIndexPath: or -collectionView:didDeselectItemAtIndexPath:
// 5. -collectionView:didUnhighlightItemAtIndexPath:
下面看一下修改后的結果,無論怎么點擊根視圖是一個collectionview的這個界面,UIImageView動畫都不會消失了,如下所示。
后記
本篇主要講述了UIImageView動畫點擊后動畫和圖片消失的問題,感興趣的給個贊或者關注~~~~