以我分段控制,有時標題寬於它的配合段。我怎樣才能使它截斷?標題分段控制的不適合,重疊
比方說,1段的標題是Text overlaps
和段2被命名爲ok
。
我多麼希望它看起來:
[Text ov...| ok ]
是什麼樣子:
T[ext overla|ps ok ]
我試了一下:
- 設置段編程
setWidth:forSegment
的寬度。仍然重疊,而不是截斷。 - 學習的
UISegmentedControl
屬性我必須截斷它自己,使該分段標題前?
以我分段控制,有時標題寬於它的配合段。我怎樣才能使它截斷?標題分段控制的不適合,重疊
比方說,1段的標題是Text overlaps
和段2被命名爲ok
。
我多麼希望它看起來:
[Text ov...| ok ]
是什麼樣子:
T[ext overla|ps ok ]
我試了一下:
setWidth:forSegment
的寬度。仍然重疊,而不是截斷。UISegmentedControl
屬性我必須截斷它自己,使該分段標題前?
你必須自己截斷它。
有一個設置截斷沒有公開的API。即使你挖通了UISegmentedControl
的私人視圖層次,找到標籤,並設置lineBreakMode
到UILineBreakModeTailTruncation
,它不會截斷標籤爲您服務。 (我試過了。)
編輯:我得到這個工作。這並不美妙,它可能會在未來的iOS版本中停止工作,並且可能會讓您從App Store中被拒絕。
static void fixLineBreakMode(UIView *view)
{
if ([view respondsToSelector:@selector(setLineBreakMode:)]) {
[(id)view setLineBreakMode:UILineBreakModeTailTruncation];
[view setFrame:CGRectInset([view.superview bounds], 6, 0)];
} else {
for (UIView *subview in view.subviews)
fixLineBreakMode(subview);
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
fixLineBreakMode(self.segmentedControl);
}
當我需要用x個分段填充分段控件時,我遇到了同樣的挑戰。一些標題懸而未決。如果它們太長,我試圖在中間截斷標題。我做了類似的:
NSString *s = @"This title is too long to fit";
NSMutableString *mS = [[NSMutableString alloc] init];
int len = [s length];
if (len > 10) {
for (int i = 0; i < len; i++) {
unichar ch = [s characterAtIndex:i];
if(i > 3 && i < 6){
[mS appendString:@"."];
} else {
[mS appendString:[NSString stringWithFormat: @"%C", ch]];
}
}
}
這只是給你一些想法。您可以限制中間的點數,只需計算添加的點數並在例如停止添加時停止添加。它會達到3.如果您有截斷的字符串,您可以使用它來設置段標題。頭部,尾部截斷的邏輯相同。
這是什麼原因導致應用程序被拒絕? – JOG 2011-12-23 19:07:29
您將訪問私人視圖層次結構。我不知道他們是否會拒絕你。我只是指出了可能性。 – 2011-12-23 19:09:32