- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个垂直的 UISlider。我已经使用所有代码创建了 View 。 (其余的 Storyboard元素使用界面构建器进行约束)
根据我的阅读,要创建一个垂直的 UISlider,您需要为 UISlider 指定一个宽度,然后旋转它。由于 UISlider 所在容器的高度因屏幕尺寸而异,我不想给它一个固定的高度(宽度)。
我是这么想的
// Mark: Slider View
let leftSlider = UISlider()
let centerSlider = UISlider()
let rightSlider = UISlider()
let colorSliders = [leftSlider, centerSlider, rightSlider]
for slider in colorSliders {
slider.translatesAutoresizingMaskIntoConstraints = false
sliderContainer.addSubview(slider)
let w = sliderContainer.bounds.width
slider.bounds.size.width = w
slider.center = CGPoint(x: w/2, y: w/2)
slider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))
slider.value = 0
slider.minimumValue = 0
slider.maximumValue = 255
let sliderTopConstraint = slider.topAnchor.constraint(equalTo: centerHiddenView.bottomAnchor, constant: 5)
let sliderBottomConstraint = slider.bottomAnchor.constraint(equalTo: sliderContainer.bottomAnchor, constant: 5)
NSLayoutConstraint.activate([sliderTopConstraint, sliderBottomConstraint])
slider.backgroundColor = .purple
slider.isEnabled = true
slider.isUserInteractionEnabled = true
}
let sliderContainerWidth: CGFloat = sliderContainer.frame.width
let centerSliderHorizontalConstraints = centerSlider.centerXAnchor.constraint(equalTo: sliderContainer.centerXAnchor)
let widthConstraint = centerSlider.widthAnchor.constraint(equalToConstant: sliderContainerWidth)
let centerSliderWidthConstraint = centerSlider.widthAnchor.constraint(equalToConstant: 90)
NSLayoutConstraint.activate([centerSliderHorizontalConstraints, centerSliderWidthConstraint, widthConstraint])
但是当我运行它时,我得到了这个
这比我今天早些时候做的要好得多。但是,我希望 slider 的宽度是正常的..并且看起来很正常只是垂直
对我遗漏的内容有什么想法吗?(哦,请忽略左边那个紫色的小分支,那是我添加但尚未约束的另外 2 个 slider 。)
最佳答案
您正在更改 UISlider
的 bounds
和 transform
并同时使用自动布局,因此它可以有点困惑。
我建议您不要修改 bounds
而是使用 Auto-Layout。您应该将 slider 宽度设置为它的 super View 高度,并将 slider 居中放置在它的 super View 中。这样,当你旋转它时,它的高度(旋转后)实际上是它的宽度(旋转前)将等于它的 super View 高度。将 slider 垂直居中将确保 slider 接触其父 View 的底部和顶部。
slider.widthAnchor.constraint(equalTo: sliderContainer.heightAnchor
slider.centerYAnchor.constraint(equalTo: sliderContainer.centerYAnchor)
slider.centerXAnchor.constraint(equalTo: sliderContainer.centerXAnchor)
如果您想将剩余的 2 个 slider 之一放置在其父 View 的左侧或右侧,请不要将其水平居中,而是执行以下操作:
slider.leadingAnchor.constraint(equalTo: sliderContainer.leadingAnchor)
slider.trailingAnchor.constraint(equalTo: sliderContainer.trailingAnchor)
此外,请仔细检查您的控制台是否有自动布局错误日志。
编辑:我在一个测试项目上检查了上面的代码,这是我的 View Controller 代码:
class ViewController: UIViewController {
@IBOutlet private weak var containerView: UIView!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let leftSlider = UISlider()
let centerSlider = UISlider()
let rightSlider = UISlider()
let colorSliders = [leftSlider, centerSlider, rightSlider]
var constraints = [NSLayoutConstraint]()
for slider in colorSliders {
slider.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(slider)
slider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))
constraints.append(slider.widthAnchor.constraint(equalTo: containerView.heightAnchor))
constraints.append(slider.centerYAnchor.constraint(equalTo: containerView.centerYAnchor))
slider.backgroundColor = .purple
}
constraints.append(leftSlider.centerXAnchor.constraint(equalTo: containerView.centerXAnchor))
constraints.append(centerSlider.centerXAnchor.constraint(equalTo: containerView.leadingAnchor))
constraints.append(rightSlider.centerXAnchor.constraint(equalTo: containerView.trailingAnchor))
NSLayoutConstraint.activate(constraints)
}
}
关于swift - 垂直 UISlider 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987040/
我正在为 tvOS 扩展一个 iOS 应用程序。 在 iOS 应用程序上,我有很多 slider (用于选择年份范围的两侧 slider ,例如 1950-2010。或从 0.1 到 10.0 的值)
目前我正在对 UISlider 进行子类化,并在 drawRect 中设置默认值。我得到了一个奇怪的结果。 slider 最小图像位于正确位置,但 slider 最大图像左侧有空白。中间的 slide
我正在使用 AvPlayer 并尝试设置一个 slider 以允许删除音频文件。我在选定时遇到了问题。然后它会回到原始位置一秒钟,然后再回到它被拖动到的位置。 你在 Gif 上看不到我的光标,但平滑的
我已经创建了一个类似以下代码的 UISlider: BrightnessSlider = [[UISlider alloc] initWithFrame:CGRectMake(sliderXpoint
我有一个连续的 UI slider 。我在值发生变化时获取该值,并使用它来计算放入文本字段的值。 我将值更改导出链接到执行计算并且工作正常的方法,但我还希望在用户抬起 slider 后触发一个方法
关闭。这个问题需要details or clarity .它目前不接受答案。 想要改进这个问题吗? 通过 editing this post 添加详细信息并澄清问题. 关闭 6 年前。 Improve
我的表格单元格中有slider,这是我的 slider 初始化代码: UISlider* slider = [[UISlider alloc] init]; slider.continuous = N
我正在开发一个游戏,它有一个基于 UISliders 的组件。玩家必须从左向右滑动它们,一次一个,有时一次两个。问题出在双幻灯片上。当同时滑动两个 UISlider 时, slider 会滞后于玩家的
我愿意做这个小部件: 只能选择A-B-C。 知道是否有人已经做了类似的事情吗?如果没有,你会怎么做? 最佳答案 就我个人而言,我会使用标准 UISlider 并向 valueChanged 处理程序添
我需要在我的 iPhone 应用程序中添加 UISlider 控件。这应该看起来像任何 iphone 或 iPod touch 中显示的“滑动解锁” slider 。我不知道如何做到这一点。 在滑动解
我正在使用 UISlider 的 setThumbImage:forState 来自定义 slider 拇指的外观。但这看起来要大得多。我使用的图像大小为 55x55 像素。我必须使用的图像大小应该是
恐怕我在这里遗漏了一些明显的东西,但我在任何地方都找不到答案,我似乎也无法自己弄清楚,所以我会在这里问。 是否可以使 UISlider 比默认的稍小一些,就像 iPhone 上“iPod”应用程序中看
这个问题已经有答案了: How to Change the UISlider to Vertical? (4 个回答) 已关闭 9 年前。 如何制作垂直的 UISlider?我在其中一个应用程序中看到
如何自定义UISlider?(更改样式、背景...) 最佳答案 您可以通过this自定义控件的教程。 要自定义 UISlider,请使用本教程中的这段代码。 UIImage *minImage = [
我尝试找出如何强制 slider 的按钮移动它而不是正常滑动,但保持复选框过滤器仍然以正确的方式工作。 当我设置按钮来移动 slider 时,过滤器无法按应有的方式工作。当我将 slider 代码从:
关于如何在 UISlider 中实现不同的值密度,你有什么巧妙的想法/解决方案吗?我的意思是我们将在 UISlider 的左半边有 20 步,在 UISlider 的右半边有 100 步。这意味着最小
我想做这样的事情。我有一个 UISlider它的最小值应该是0,最大值应该是1000。我想把这个范围分成10个部分。像这样。 0-----100----200----300----400 当用户从 0
我已经为 UISlider 设置了缩略图。当我拖动 slider 时,此图像不会反射(reflect)出来。一旦我完成拖动,它就会出现。 我已经为所有状态设置了图像 [self.myslide
我正在构建一个 iOS 应用程序,我必须在其中实现自定义 UISlider。问题是内置的 UISlider 不支持渐变轨道。另一个问题是我的 UI 风格指南显示当前跟踪值矩形应该是两种颜色的渐变,如图
我正在创建(或尝试)自定义 UISlider 外观,仍然是水平的,但要高得多。我有两个问题。 1.这是我用来将图像放到 slider 上的代码。 UIImage *minImage = [UIImag
我是一名优秀的程序员,十分优秀!