我有一個容器UIView
和UILabel
。容器視圖大小已設置,然後我將文本添加到UILabel
,在標籤上調用sizeToFit
,並將標籤添加爲容器視圖的子視圖。當實際中心關閉時,將UILabel對準其超級視圖
然後我用下面的代碼中心集裝箱視圖內側的標籤:
viewCountLabel.frame = CGRectMake(viewCountContainer.frame.size.width/2 - viewCountLabel.frame.size.width/2, viewCountContainer.frame.size.height/2 - viewCountLabel.frame.size.height/2, viewCountLabel.frame.size.width, viewCountLabel.frame.size.height);
這是非常標準的代碼來居中的東西它是上海華/容器,它總是工作得很好。
但是,現在我有一個小問題。這個標籤的文字是一個簡單的數字。它可能是1,9,15,22等
我的問題是,當我集中一切,一些數字看中心,即使他們在技術上完全居中。
下面是一個例子PIC與邊框容器和標籤兩個,所以你可以看到,他們都完全居中:
但這裏是它的外觀沒有國界:
15
看起來不像它的居中,即使它在技術上是。它看起來有點偏離右邊。如果我從x值中減去2或3,它會在視覺上看起來居中,但看到這就是問題所在。
如何設置邏輯以「視覺中心化」這樣的標籤的各種值?我覺得根據文本值設置一堆if
聲明是過度殺傷性的,並且只是對該問題應用了一個bandaid。
我也試過使用NSTextAlignmentCenter
這並沒有什麼區別。我不確定我是否錯誤地使用NSTextAlignmentCenter
,或者如果sizeToFit
存在潛在問題。
您會注意到該標籤的藍色邊框在所有邊上都有額外的空間,但對於此問題最重要的是它在左側和右側都有額外的空間。我覺得這可能會導致這個問題,但我不知道如何解決這個問題,或者如果這是問題。
這裏是我的代碼:
// Setup view count label container
UIView *viewCountContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 95, 95)];
viewCountContainer.frame = CGRectMake(self.view.frame.size.width/2 - viewCountContainer.frame.size.width/2, 87, viewCountContainer.frame.size.width, viewCountContainer.frame.size.height);
// Setup + add number label to container
UILabel *viewCountLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.pushModal.frame.size.width, 95)];
viewCountLabel.textAlignment = NSTextAlignmentCenter;
viewCountLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:72];
viewCountLabel.textColor = [UIColor colorWithRed:0.278 green:0.278 blue:0.278 alpha:1];
viewCountLabel.text = [NSString stringWithFormat:@"%d", viewCount];
[viewCountLabel sizeToFit];
// Center the label to it's super view (viewCountContainer)
viewCountLabel.frame = CGRectMake(viewCountContainer.frame.size.width/2 - viewCountLabel.frame.size.width/2, viewCountContainer.frame.size.height/2 - viewCountLabel.frame.size.height/2, viewCountLabel.frame.size.width, viewCountLabel.frame.size.height);
[viewCountContainer addSubview:viewCountLabel];
[self.view addSubview:viewCountContainer];
這真的取決於字體。你可以改變它嗎? – picciano