16

コントロールが大きくなるにつれて UIRefreshControl の背景を大きくすることは可能ですか?

一番上のセルの背景色と一致するように、更新コントロールの背景色を設定したいと思います。テーブルビューの背景色を変更すると、下部の空のセルにも色が付くため、受け入れられませんが、白のままにする必要があります。

Apple のメール アプリは、この動作を示します。更新コントロールの背景は灰色の検索バーと一致しますが、テーブル ビューの下部にある空のセルは通常の白のままです。

以下は、テーブルがどのように見えるかを示すスクリーンショットの例で、更新コントロールが引っ張られたときに表示される醜い白を示しています。
ここに画像の説明を入力

4

3 に答える 3

27

bgColor を使用してビューを作成し、それを tableView に負の y 原点で追加する必要があります。

警告:

  • このビューを tableView サブビューの一番下のスタックに挿入する必要があります
  • refreshControll を設定した後に、このビューを挿入する必要があります。

このビューをこの方法で挿入しないと、更新コントロールが表示されません。ビューの下に隠れます。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Background Color
    UIColor *bgRefreshColor = [UIColor grayColor];

    // Creating refresh control
    refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
    [refreshControl setBackgroundColor:bgRefreshColor];
    self.refreshControl = refreshControl;

    // Creating view for extending background color
    CGRect frame = self.tableView.bounds;
    frame.origin.y = -frame.size.height;
    UIView* bgView = [[UIView alloc] initWithFrame:frame];
    bgView.backgroundColor = bgRefreshColor;
    bgView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

    // Adding the view below the refresh control
    [self.tableView insertSubview:bgView atIndex:0]; // This has to be after self.refreshControl = refreshControl;
}
于 2012-11-15T09:51:32.743 に答える
5

これは、UIRefreshControl 背景色プロパティを設定するだけで実現できます (Swift 5、iOS 13)。

let ctrl = UIRefreshControl(frame: .zero)    
ctrl.backgroundColor = UIColor.gray'
tableView.refreshControl = ctrl

ここに画像の説明を入力

于 2020-03-13T14:00:01.723 に答える