1

UIViewであり、内部にラベルがあるフッタービューを実装しています。UILabelが常に中央に留まるようにしたかったのですが、そうではありません。これが私のコードです:

- (void)setupFooterView
{
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.scrollView_.frameWidth, kFooterViewHeight)];
    [footerView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth];
    [footerView setBackgroundColor:[UIColor clearColor]];

    UILabel *loadMoreLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    [loadMoreLabel setBackgroundColor:[UIColor clearColor]];
    [loadMoreLabel setFont:[UIFont fontWithName:kProximaNova size:16]];
    [loadMoreLabel setTextColor:[UIColor whiteColor]];
    [loadMoreLabel setLineBreakMode:UILineBreakModeTailTruncation];
    CGSize desiredSize =  [[PNRConstants kLoadingMore] sizeWithFont:loadMoreLabel.font constrainedToSize:CGSizeMake(footerView.frameWidth, footerView.frameHeight) lineBreakMode:loadMoreLabel.lineBreakMode];
    [loadMoreLabel setFrameSize:desiredSize];
    [loadMoreLabel setCenter:CGPointMake(footerView.frameWidth/2, footerView.frameHeight/2)];
    self.loadingMoreLabel_ = loadMoreLabel;
    [footerView addSubview:self.loadingMoreLabel_];
    [loadMoreLabel release];

    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    [spinner setBackgroundColor:[UIColor clearColor]];
    [spinner setFrameX:self.loadingMoreLabel_.frameX - spinner.frameWidth - 10];
    [spinner setFrameY:self.loadingMoreLabel_.frameY];
    self.spinner_ = spinner;
    [footerView addSubview:self.spinner_];
    [spinner release]; 

    [self.scrollView_ setFooterView_:footerView];
    [footerView release];
}

私はここで何が間違っているのですか?

4

3 に答える 3

1
[loadMoreLabel setCenter:CGPointMake(footerView.frameWidth/2, footerView.frameHeight/2)];

footerView.frameWidth/2 は

footerView.frameWidth/2 - loadMoreLabel.frame.size.width/2

これは、ラベルのアンカーが中央ではなく左上隅にあるためです。これを考慮して、ラベルの幅の半分を差し引きます。

于 2012-07-20T23:53:27.057 に答える
0

ラベルのフレームを設定した後:[yourLabel setCenter: yourFooter.center];

于 2012-07-20T16:09:14.940 に答える
0

正しい方法: ペン先を使用し、サイズ変更マスクを設定して、1 日と呼びます。

面倒な方法: プログラムでラベルを作成します。次に、いくつかのオプションがあります。 - ラベルをフッターと同じ幅にし、テキストを中央揃えに設定します。- ラベルの center プロパティを footer.frame.width/2 および footer.frame.height/2 に設定します

編集:ああ、あなたはすでにドンです。yournlabel の text align プロパティを center に設定します。

于 2012-07-21T06:10:24.717 に答える