swift 的自定义按钮

Custom buttons with swift

因此,在此处所附的屏幕截图中,有 3 个大 "buttons"。单击一个按钮时,下方会出现一个小箭头,下方内容会发生变化。 我想做这样的事情。

如您所见,每个按钮上都有几个不同大小的文本。 我正在考虑使用自定义分段控件。这是方法吗? 或者我应该使用自定义按钮并为每个按钮处理 "selected" 状态。

如何做一个里面有不同文本的自定义按钮?

您所描述的或多或少是 UITabBarUITabBarController 的行为。但是,我认为系统不会设置为让您自定义外观。

您所描述的自定义控件也类似于 UISegmentedControl,但也不完全相同。同样,我不认为 UISegmentedControl 是为这样的自定义行为设置的。

我可能会创建一个 UIControl 的自定义子类,它有 3 个状态(或者更好的是,N 个状态,每个状态都有文本,可选图像等,以及所有设置的数组可能的状态,以及当用户更改状态时可以通知的委托。)

那么您可能应该创建一个父视图控制器,在顶部包含自定义控件,在下面创建一个托管 N 个子视图控制器之一的视图。当用户点击您的控件的一个部分时,您将在不同的子视图控制器中制作动画。你可以使用这个方法 transitionFromViewController:toViewController:duration:options:animations:completion:,非常好用。

我建议使用 UIPageViewController,因为用户需要向左滑动并书写,如果单击其中一个按钮,您可以模拟两个内容的移动[UIViewController( s) 和页面指示器很容易

我认为使用分段控件不可能做到这一点,除非您想为文本使用图像,因为 UISegmentedControl 不支持属性字符串。我会使用 3 UIButtons 和属性字符串作为标题,这样你就可以为不同的行使用不同的字体大小。使用 CAShapeLayer 可以很容易地绘制底部的三角形。最好是 subclass UIButton 这样你就可以把用不同字体构建标题所需的逻辑放在视图控制器之外进行绘图 class.