有没有办法使UISegmentedControl按钮的大小不同?

She*_*lam 5 iphone cocoa-touch objective-c uisegmentedcontrol

我有一个带有2个项目的UISegmentedControl.

有没有办法让左项比右项更大?

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:symbol,@"+", nil]];
        [segmentedControl addTarget:self action:@selector(segmentedControlChanged:)forControlEvents:UIControlEventValueChanged];
        [segmentedControl setWidth:45 forSegmentAtIndex:0];
        [segmentedControl setWidth:20 forSegmentAtIndex:1];
        segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
        segmentedControl.frame = CGRectMake(0,0,300,30);
        segmentedControl.momentary = NO;
        [segmentedControl setSelectedSegmentIndex:0];

        self.navigationItem.titleView = segmentedControl;
Run Code Online (Sandbox Code Playgroud)

不行.

Gyp*_*psa 12

是的,你可以这样做: -

    [*yoursegmentcontrolobjectname* setWidth:45 forSegmentAtIndex:0];
    [*yoursegmentcontrolobjectname* setWidth:15 forSegmentAtIndex:1];   

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:symbol,@"+", nil]];
        [segmentedControl addTarget:self action:@selector(segmentedControlChanged:)forControlEvents:UIControlEventValueChanged];
        segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
        segmentedControl.frame = CGRectMake(0,0,300,30);
        segmentedControl.momentary = NO;
        [segmentedControl setSelectedSegmentIndex:0];

        self.navigationItem.titleView = segmentedControl;
Run Code Online (Sandbox Code Playgroud)

现在添加这两行然后它将工作

        [segmentedControl setWidth:45 forSegmentAtIndex:0];
        [segmentedControl setWidth:20 forSegmentAtIndex:1];
Run Code Online (Sandbox Code Playgroud)


jtb*_*des 9

当然.您可以使用-setWidth:forSegmentAtIndex:(确保在设置分段控件的边界/框架后执行此操作),或者只更改接口文件中的宽度(似乎这在导航栏中不起作用,仅在其他地方):

在此输入图像描述


小智 5

如果您只想将segment元素的大小调整为其内容,请使用以下BOOL属性:

apportionsSegmentWidthsByContent

并将其设置为YES(默认为NO)