[解決済み] UICollectionView上のUIRefreshControlは、コレクションがコンテナの高さを満たした場合にのみ動作する
2022-05-03 22:49:31
質問
を追加しようとしています。
UIRefreshControl
に
UICollectionView
しかし、問題は、コレクション・ビューがその親コンテナの高さを満たさない限り、リフレッシュ・コントロールが表示されないことです。言い換えれば、コレクションビューがスクロールを必要とするほど長くなければ、リフレッシュコントロールビューを表示するためにプルダウンすることはできません。コレクションが親コンテナの高さを超えた時点で、コレクションはプルダウンされ、リフレッシュビューが表示されます。
簡単なiOSプロジェクトを立ち上げてみました。
UICollectionView
メインビューの内部には、コレクションビューへのアウトレットがあり、そのアウトレットに
UIRefreshControl
の中で、それに
viewDidLoad
. また、再利用識別子を持つプロトタイプのセルもあります。
cCell
これはコントローラ内のすべてのコードですが、この問題をかなりよく表しています。このコードでは、セルの高さを100に設定していますが、これではディスプレイを埋めるのに十分ではないため、ビューをプルできず、リフレッシュ・コントロールも表示されません。ディスプレイを埋めるためにもっと高い値に設定すると、うまくいきます。何かアイデアはありますか?
@interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>
@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[self.collectionView addSubview:refreshControl];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 1;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
return [collectionView dequeueReusableCellWithReuseIdentifier:@"cCell" forIndexPath:indexPath];
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(self.view.frame.size.width, 100);
}
解決方法は?
これを試してみてください。
self.collectionView.alwaysBounceVertical = YES;
の完全なコード
UIRefreshControl
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.tintColor = [UIColor grayColor];
[refreshControl addTarget:self action:@selector(refershControlAction) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];
self.collectionView.alwaysBounceVertical = YES;
関連
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。