这个 iOS 应用程序使用分段控制吗?

Is this iOS app using segmented control?

在这张照片(AirBnB iOS 应用程序)中,上面写着 Upcoming 和 Previous,你们认为这是如何实现的?大家觉得这是用分段控制开发的还是两个不同的按钮互相反转(on/off,off/on)? 有没有简单的方法(最好使用 Swift)或库来在应用程序中实现此功能? 对不起,如果这是一个非常天真的问题。这是我学习 iOS 开发的第 3 天:泪流满面:

是的,它可能是一个分段控件。你可以有类似下面的东西:

UIImage *segmentSelected =
[[UIImage imageNamed:@"segcontrol_sel.png"]
    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentUnselected =
[[UIImage imageNamed:@"segcontrol_uns.png"]
    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelectedUnselected =
[UIImage imageNamed:@"segcontrol_sel-uns.png"];
UIImage *segUnselectedSelected =
[UIImage imageNamed:@"segcontrol_uns-sel.png"];
UIImage *segmentUnselectedUnselected =
[UIImage imageNamed:@"segcontrol_uns-uns.png"];

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance]
setDividerImage:segUnselectedSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];

引自 RayWenderlich: http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6

没有正确答案,因为我们没有源代码。

然而,它可能是以下命题之一:

  • 使用 UISegmentedControl 并自定义其外观;
  • 使用两个 UIButton 并根据当前选择的那个更改外观;
  • 创建您自己的组件:IBDesignable(您可以在构建界面时直接看到)。

由于您是 第 3 天学习 iOS 开发,您可能想看看上面的所有命题。

IBDesignable 解决方案可能是更好的解决方案。事实上,如果你正确地构建它,你将能够在不同的屏幕尺寸和多个应用程序中轻松地重用它。但是,您一开始创建它可能并不容易。