gpt4 book ai didi

swift - 转换分段控件中的特定段

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:29 25 4
gpt4 key购买 nike

有没有办法转换分段控件中包含的特定段的内容? (我必须将它旋转 180 度)

不是其中包含的图像,因为在我的情况下没有图像(我使用了 FontAwesome)

演示:

来自:original至:rotated

最佳答案

是的!

假设我们有一个包含 3 个段的分段控件:

enter image description here

实际上,它是一个包含 3 个 subview 的 View ,类型为 UISegment。如果我们尝试打印这个分段控件 subviews (假设我们将它作为 segmentedControl IBOutlet 连接到所需的 View Controller ):

class ViewController: UIViewController {
// MARK:- IBOutlets
@IBOutlet weak var segmentedControl: UISegmentedControl!

override func viewDidLoad() {
super.viewDidLoad()

for view in segmentedControl.subviews {
print(view)
}
}
}

日志应该显示类似于:

UISegment: 0x7febebc06980; frame = (229 0; 114 29); layer = CALayer: 0x60000002edc0 UISegment: 0x7febebe140c0; frame = (114 0; 114 29); layer = CALayer: 0x618000231800 UISegment: 0x7febebe14d30; frame = (0 0; 113 29); layer = CALayer: 0x6180002319c0

因此,您可以将分段控件中的分段作为 UISegment 进行访问,从而将需要的编辑作为 UIView 应用于它。例如,如果你想旋转第二段,你可以实现:

override func viewDidLoad() {
super.viewDidLoad()

for view in segmentedControl.subviews[1].subviews {
print(view)
view.transform = CGAffineTransform(scaleX: -1, y: 1)
}
}

如您所见,该段也有 subview :

UISegmentLabel: 0x7f8b51701770; frame = (0 0; 64 22.5); text = 'Second'; opaque = NO; userInteractionEnabled = NO; layer = _UILabelLayer: 0x610000091530

UIImageView: 0x7f8b51701470; frame = (114 0; 1 1); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; tag = -1030; layer = CALayer: 0x610000031480

因此,您应该旋转所有这些 subview ,如上面的代码片段中所实现的那样。

输出将是:

enter image description here


同样的方法应该适用于具有图像而不是标题的分段控件:

旋转前:

enter image description here

旋转后:

enter image description here

关于swift - 转换分段控件中的特定段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44940155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com