【问题标题】:UIToolbar with abnormally fat UISegmentedControlUIToolbar 异常胖 UISegmentedControl
【发布时间】:2013-02-13 02:57:06
【问题描述】:

我从来没有在没有 Interface Builder 的情况下将分段控件添加到底部工具栏。我将相同的分段控件添加到导航控件工具栏而没有此问题。我究竟做错了什么?谢谢你。

//enable UIToolbar
self.navigationController.toolbarHidden = NO;

//UISegmentedControl
NSArray *segmentedControlItems = [[NSArray alloc] initWithObjects:@"Day One",@"Day Two",nil];
self.segmentedCon = [[UISegmentedControl alloc] initWithItems:segmentedControlItems];
[segmentedControlItems release];
[self.segmentedCon addTarget:self action:@selector(daySegConIndexChange) forControlEvents:UIControlEventValueChanged];
[self.segmentedCon setSelectedSegmentIndex:0];
[self.segmentedCon setSegmentedControlStyle:UISegmentedControlStyleBar];
[self.segmentedCon setWidth:85.0 forSegmentAtIndex:0];
[self.segmentedCon setWidth:85.0 forSegmentAtIndex:1];
[self.segmentedCon setFrame:[self.navigationController.toolbar bounds]];

//bar button items
UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *segBarBtn = [[UIBarButtonItem alloc] initWithCustomView:self.segmentedCon];

//nsarray of tool bar items
NSArray *toolbarItems = [NSArray arrayWithObjects:flexibaleSpaceBarButton,segBarBtn,flexibaleSpaceBarButton,nil];
[self setToolbarItems:toolbarItems animated:YES];
[segBarBtn release];

【问题讨论】:

    标签: iphone ios objective-c uitoolbar uisegmentedcontrol


    【解决方案1】:

    试试这个吧..

    //UISegmentedControl
    NSArray *segmentedControlItems = [[NSArray alloc] initWithObjects:@"Day One",@"Day Two",nil];
    self.segmentedCon = [[UISegmentedControl alloc] initWithItems:segmentedControlItems];
    [segmentedControlItems release];
    [self.segmentedCon addTarget:self action:@selector(daySegConIndexChange) forControlEvents:UIControlEventValueChanged];
    [self.segmentedCon setSelectedSegmentIndex:0];
    [self.segmentedCon setSegmentedControlStyle:UISegmentedControlStyleBar];
    
    //bar button items
    UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    UIBarButtonItem *segBarBtn = [[UIBarButtonItem alloc] initWithCustomView:self.segmentedCon];
    

    【讨论】:

    • 这行得通。谢谢你。我是遗漏了什么还是只有一行给我造成了这个麻烦? //this one [self.segCon setFrame:[self.navigationController.toolbar bounds]]; 这会将分段控件拉伸到工具栏的高度是有道理的,即将 self.segCon 的框架设置为导航工具栏的边界。每个索引的“setWidth:85.0”将其塞入左侧。
    【解决方案2】:

    尝试设置分段控件的框架...

    CGRect r = self.segmentedCon.frame;
    
    self.segmentedCon.frame = CGRectMake(r.origin.x, r.origin.y, r.size.width, 30);
    

    【讨论】:

    • 不幸的是同样的结果。
    猜你喜欢
    • 2010-12-31
    • 2011-09-21
    • 2010-12-31
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2010-10-30
    相关资源
    最近更新 更多