2012-07-20 62 views
1

我正在實現一個頁腳視圖,這是一個UIView,它內部有一個標籤。我希望它能讓UILabel始終保持在中心位置,但它不會。這裏是我的代碼:對齊UILabel以UIView爲中心

- (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]; 
} 

我在做什麼錯在這裏?

回答

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

的footerView.frameWidth/2的需求是

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

這是因爲標籤的錨是在左上角,而不是在中心。你減去你的標籤寬度的一半來說明這一點。

0

設置標籤的框架後:[yourLabel setCenter: yourFooter.center];

+0

...當然你的頁腳的框架必須已經設置(並添加到它的超級視圖),當你設置標籤的中心。 – 2012-07-20 16:10:40

+0

我alreayd做對嗎? – xonegirlz 2012-07-20 16:14:27

+0

不,你正在像[loadMoreLabel setCenter:CGPointMake(footerView.frameWidth/2,footerView.frameHeight/2)]定義框架;而不是說:[loadMoreLabel setCenter:footerView.center];它並不總是一樣的。 – 2012-07-20 16:15:40

0

正確的方法:使用筆尖,設置調整大小的面具,並稱之爲一天。

痛苦的方式:以編程方式創建標籤。 然後有幾個選項: - 使標籤與頁腳一樣寬,並將其文本對齊到中心。 - 將標籤的中心屬性設置爲footer.frame.width/2和footer.frame.height/2

編輯:哦,你已經是dong了。將yournlabel的文本對齊屬性設置爲居中。