我正在创建一个自定义的UISlider并且想知道,如何增加拇指图像的"点击区域"?下面的代码效果很好,除了拇指的"点击区域"保持不变.如果我没错,我相信标准拇指面积是19像素?让我们说我想用下面的代码将它增加到35px,我需要采取哪些步骤?请记住,我根本不是这个领域的专家.
编辑 以下代码已更正并准备好复制意大利面!希望它能帮到你!
main.h
#import "MyUISlider.h"
@interface main : MLUIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UIGestureRecognizerDelegate, MLSearchTaskDelegate, MLDeactivateDelegate, MLReceiptDelegate>
{
..........
}
- (void)create_Custom_UISlider;
Run Code Online (Sandbox Code Playgroud)
的main.m
- (void)viewDidLoad
{
[self create_Custom_UISlider];
[self.view addSubview: customSlider];
}
- (void)create_Custom_UISlider
{
CGRect frame = CGRectMake(20.0, 320.0, 280, 0.0);
customSlider = [[MyUISlider alloc] initWithFrame:frame];
[customSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
// in case the parent view draws with a custom color or gradient, use a transparent color
customSlider.backgroundColor = [UIColor clearColor];
UIImage *stetchLeftTrack = [[UIImage imageNamed:@"blue_slider08.png"] …Run Code Online (Sandbox Code Playgroud) 编辑:我正在开始这个奖励,因为我正在寻找一个带有UITableViewCell 子类的"更清洁"的解决方案,而不是搞乱UITableView委托和数据源.理想情况下,我想看看我怎么能处理这些UISlider事件.谢谢!
我正在使用组样式UITableView,我有几个看起来像这样的单元格:

现在,当我处于编辑模式时,我想UISlider设置一个正确的UILabel的值,以便结果如下所示:

有人能指出我正确的方向吗?我甚至不确定我是应该通过子类化UITableViewCell还是在IB中做到这一点.代码片段将受到高度赞赏:)
我正试图在我的应用程序中模仿Apple的"Slide to Unlock"功能.我到了这一点(下面的图片),但正如你所看到的那样,UISlider的"轨道"是可见的并且掩盖了我的文字.有没有办法以编程方式更改属性,使"轨道"不可见?

如果您需要我的任何代码,请告诉我.
提前致谢!
编辑:如果我将滑块的alpha更改为0,它将摆脱我的滑动按钮,所以这样做不会起作用,除非我做错了.:)
我想要的是一个UISlider让用户不仅可以在他开始时滑动thumbRect,而且还可以在其他地方点击的时候滑动.当用户点击滑块但在滑块之外时thumbRect,滑块应跳转到该值,然后仍然保持用户的滑动手势.
到目前为止我尝试过的是在这个建议中实现UIGestureRecognizer的子类.当它thumbRect发生在外面某处的触地时,它就开始了.问题是滑块设置其值但随后进一步滑动手势被忽略,因为触摸识别器已经窃取了触摸.
如何实现滑块,您可以在任何地方点按但仍然可以立即滑动?
编辑:ali59a非常友好地添加了我现在所做的一个例子.这需要再次抬起手指,之后我可以触摸并拖动滑动(水龙头不是我想要的,我需要立即'触摸和滑动').
我已经添加了UISlider一个iOS应用程序,我正在使用Xcode 5.1开发,我无法摆脱以下恼人的行为.当我第一次触摸拇指时,它会跳跃少量.
这是一个详细说明行为的快速示例.
当滑块拇指最初位于中心的左侧(例如,处于最小值)时,它会向右跳跃.如果我在iOS模拟器中运行应用程序,拇指会在第一次触摸时跳转而不会拖动任何内容.拇指总是跳向赛道的中心.它不跳的唯一时间是它在轨道的精确中心.即使滑块未连接任何内容,也会出现此行为.
有什么方法可以禁用它吗?
我的swift项目中有一个滑块和标签.在故事板上,我控制将我的滑块拖动到该页面的控制器类上,并创建了一个插座和一个动作.我控制拖动另一个标签作为插座.我试图根据滑块的值更新标签.我不知道我哪里错了.
码:
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var sliderVal: UILabel!
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
println("Slider changing to \(currentValue) ?")
sliderVal.text = "\(currentValue) Km"
}
Run Code Online (Sandbox Code Playgroud)
我可以在日志中看到正在调用sliderValueChanged函数并且日志正在打印该值但标签的文本未更新.我究竟做错了什么?
更新:
我只是在我的登录屏幕上放了一个滑块对象和标签,并使用相同的方法和代码来更改标签文本并且它工作但它在我的标签栏控制器中不起作用.这是否可以解决问题所在?
我创建了一个Slider(作为视频的控件,就像YouTube在底部一样)并设置最大值(持续时间)和最小值.然后用来SeekToTime改变currentTime.现在,用户可以滑动滑块的拇指来更改值
我想要实现的是让用户点击滑块上的任意位置并设置视频的当前时间.
我从这个答案中得到了一个方法,我试着将它应用到我的案例中,但是无法使它成功
class ViewController: UIViewController, PlayerDelegate {
var slider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
// Setup the slider
}
func sliderTapped(gestureRecognizer: UIGestureRecognizer) {
// print("A")
let pointTapped: CGPoint = gestureRecognizer.locationInView(self.view)
let positionOfSlider: CGPoint = slider.frame.origin
let widthOfSlider: CGFloat = slider.frame.size.width
let newValue = ((pointTapped.x - positionOfSlider.x) * CGFloat(slider.maximumValue) / widthOfSlider)
slider.setValue(Float(newValue), animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这应该有用,但没有运气.然后我尝试在尝试将"A"打印到日志时进行调试,但事实并非显然不会进入该sliderTapped()功能.
我究竟做错了什么?或者有更好的方法来实现我想要实现的目标吗?
uislider uigesturerecognizer ios uitapgesturerecognizer swift
我有一个定制的UISlider,对于大手指的人来说,由于"拇指图像"的大小而难以抓住并滑动.有没有办法在不改变图像大小的情况下增加可点击/可拖动区域的大小?
这是我创建自定义滑块的代码,如果有帮助的话:
[slider setMaximumTrackImage:[[UIImage imageNamed:@"max.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 20)]
forState:UIControlStateNormal];
[slider setMinimumTrackImage:[[UIImage imageNamed:@"min.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 20)]
forState:UIControlStateNormal];
[slider setThumbImage:[UIImage imageNamed:@"thumb.png"]
forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud) 我已将我的UISlider设置为响应值更改事件:
[customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
[customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown];
[customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
我想将滑块设置为上次使用视图时用户离开的位置.我这样做:
[customSlider setValue:position animated:YES];
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了,我已经建立了一个挂在滑块"旋钮"上的"标签",这样用户可以在移动滑块时看到值.当UIControlEventValueChanged调用"sliderMove"方法时,将设置"标记"的位置.
使用[slider setValue:position animated:YES]滑块移动时,但事件不会触发.
是否有我可以访问的代表或涵盖此方案的事件?
谢谢你给予的任何帮助:)
我正在使用UISlider,它会自动更新,除非用户触摸滑块按钮.因此我在NSTimer自动更新的功能中执行此操作:
if (!isSliderTouched) {
[progressSlider setValue: progressValue];
}
Run Code Online (Sandbox Code Playgroud)
当用户松开手指时,如何跟踪此事件的结束.只要用户与此控件交互,我想设置isSliderTouched.
编辑:这应该是情节:
方案:
UIControlEventTouchDown
UIControlEventTouchUpInside
[progressSlider addTarget:self action:@selector(sliderMoveStart) forControlEvents:UIControlEventTouchDown];
Run Code Online (Sandbox Code Playgroud)
欢呼声
uislider ×10
ios ×6
iphone ×5
objective-c ×4
swift ×2
cocoa-touch ×1
events ×1
opacity ×1
uitableview ×1