繁体   English   中英

条形分段控件在iOS7 iphone 5s真实设备的工具栏中有填充

[英]Bar segmented control has padding in Toolbar on iOS7 iphone 5s real device

我遇到了一个问题。 工具栏在iOS7 iphone 5s真实设备前面添加了填充。

错误图片 ;

但是,这个问题在模拟器和iOS7 iphone 4s设备上都看不到。

我的配置是

Ui Confguration

任何人都可以指出可能出错的地方? 提前致谢

即使我遇到了同样的问题(但是,在模拟器和设备中都看到了它)。 我使用setWidth消息来限制每个段的宽度。 所以,像: -

[segmentedControl setWidth:75.0f forSegmentAtIndex:0];

应该解决这个问题。 我不是在使用故事板

我并不为这个修复感到骄傲,但它确实为我解决了这个问题:

// in the app delegate class
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

// in the view
- (void)fixToolbarWidth
{
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    {
        float adjust = -10.5f;

        // self.toolbar is linked to the UIToolbar
        self.toolbar.frame = CGRectMake(adjust, 0, [SizeHelper getSizeInOrientation].width-adjust, self.toolbar.frame.size.height);

        // self.segmentedControl is linked to the UISegmentedControl
        self.segmentedControl.frame = CGRectMake(0, 0, self.toolbar.frame.size.width+(adjust*2), self.segmentedControl.frame.size.height);
    }
}
- (void)viewDidLoad
{
    [super viewDidLoad];

    // fix on first load
    [self fixToolbarWidth];
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

    // resize if they rotate the device
    [self fixToolbarWidth];
}

更新/简化版本

只要正确设置工具栏和分段控制器以缩放.xib文件中的整个宽度,就可以在viewDidLoad执行以下操作

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    // use a different adjustment for iPad vs iPhone/touch
    float adjust = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? -14.0f : -9.0f;
    self.toolbar.frame = CGRectMake(adjust, 0, self.toolbar.frame.size.width-adjust, self.toolbar.frame.size.height);
    self.segmentedControl.frame = CGRectMake(0, 0, self.segmentedControl.frame.size.width+adjust, self.segmentedControl.frame.size.height);
}

我也遇到同样的问题。 我所做的是将段控件放在工具栏之外。 这对我有用。 在此输入图像描述

如果有人仍在寻找不包括固定段宽度的答案,则需要在UIToolbarSegmented Control周围使用Flexible Space

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM