我有一个自定义的UISlider,我想用它向用户显示信息,我不希望用户能够与滑块进行交互.我试过了
mySlider.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
但滑块变灰,看起来不像我想要的样子.
那么,如何将UIControl设置为禁用而不"灰化"它.
我正在使用自定义UISlider在AVPlayer中播放视频时实现擦洗.试图找出在UISlider各端显示当前播放时间和剩余持续时间的最佳方式,因为它通常显示在MPMoviePlayerController中.
任何帮助表示赞赏.
我刚刚开始使用Objective C,但我已经遇到了一个问题:当我在过去这样做时,我没有遇到任何问题:我制作了一个新的UISlider,点击它,CTRL将一条蓝线拖到了代码,然后以某种方式我能够读取它的值.
但是,我现在遇到的问题是我不能再画那些线了.通过搞乱我设法让按钮工作,但滑块不起作用.我的Mainwindow.xib有iSaturateViewController类,iSaturateViewController.xib已经有了整个界面.
如何在不能绘制该线的情况下使UISlider工作?
我现在怎么做:(在iSaturateViewController.h中)
#import <UIKit/UIKit.h>
@interface iSaturateViewController : UIViewController {
UISlider * satSlider;
UILabel * satLabel;
}
@property (nonatomic, retain) IBOutlet UISlider * satSlider;
@property (nonatomic, retain) UILabel * satLabel;
-(IBAction) changeSaturation:(id) sender;
@end
Run Code Online (Sandbox Code Playgroud)
(在iSaturateViewController.m中):
@synthesize satLabel,satSlider;
-(IBAction) changeSaturation:(id)sender {
satLabel.text = [[NSString alloc] initWithFormat:@"Saturation: %d ", (Float32)satSlider.value];
NSLog(@"%f", satSlider.value);
}
Run Code Online (Sandbox Code Playgroud)
在NSLog显示的那一刻:0.00000000
另外,我将Identity属性中的Label设置为:satSlider(slider)和satLabel(label).
只是为了澄清我的目标:
我希望滑块(satSlider)值通过函数changeSaturation显示在UILabel(satLabel)中.
我怎样才能做到这一点?
我正在开发一个语音备忘录应用程序,该应用程序可以记录用户的声音并进行播放。
录音部分效果很好。记录的文件已成功存储,并且当用户点击保存的文件时,它才开始播放文件。
我UISlider用来指示播放进度。现在,我将UISlider的userInteractionEnabled属性禁用为NO。因此,我不允许用户与UISliderbar 进行交互。
我需要的是,我想将此属性启用为YES,以便可以选择所需的位置播放音频。为此,我在滑块代码中添加了以下行。
[mySlider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
通过添加以上行,我可以找到sliderChanged:方法中的滑块位置。但是,我不知道如何从所选位置启动播放器。每个文件都有不同的大小,因此它们的播放时间也不同。
有没有可用的示例代码?需要您的帮助。
谢谢
在UISlider上释放触摸时,滑块的值会稍微变化并且不受控制地变化.它非常灵敏,甚至只是在屏幕上释放手指时也会发生变化.如何实现用户可以设置他想要的值而不会出现问题?
这就是我创建UISlider的方式:
UISlider *slider = [[UISlider alloc] initWithFrame: CGRectMake(100.0, 100.0, 200.0, 40.0)];
slider.minimumValue = 0.0;
slider.maximumValue = 100.0;
[slider addTarget: self action: @selector(sliderChanged:event:) forControlEvents:UIControlEventAllEvents];
[slider setValue: 50.0 animated: NO];
Run Code Online (Sandbox Code Playgroud) 网页浏览中的单个或多个水平滑块会带来麻烦.用户滑动滑块的拇指而不会导致页面视图滑动.
我尝试过的变通方法
它为什么这样做?我怎么能改变它?并且无论如何都要更改滑块以使进度滑块不是圆角而是正方形?
我希望它是正方形,代码只是一个普通的UI滑块实现.我只编辑了
override func trackRectForBounds(bounds: CGRect) -> CGRect {
return CGRectMake(0, 0, self.frame.width, 25)
}
Run Code Online (Sandbox Code Playgroud)
使酒吧更高
如何在sliderValueChanged(_ :)上实现UIImage的实时模糊?
@IBOutlet weak var imageView: UIImageView!
@IBAction func sliderValueChanged(sender: UISlider) {
let blurRadius = sender.value
var img = imageView.image
// some image processing for img
//blurring for img
// some another image processing for img
imageView.image = img
}
Run Code Online (Sandbox Code Playgroud)
由于存在其他图像处理,我不适合UIImageView的模糊.
谢谢!
如何更改我用作thumbImage的UIImage的大小.我用来设置图像的代码如下.
let image: UIImage = UIImage(assetIdentifier: UIImage.AssetIdentifier.Slider)
Run Code Online (Sandbox Code Playgroud)
我使用Enum来获取图像,没有问题.
我用来设置thumbImage的代码如下.
self.setThumbImage(image, forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)
我已尝试使用下面的代码更改拇指图像大小但无法找到解决方案.
let trackRect: CGRect = CGRect(x: 0.0, y: 0, width: self.frame.size.width, height: self.frame.size.height)
let thumbRect: CGRect = CGRect(x: 0.0, y: 0.0, width: 12.0, height: 12.0)
thumbRectForBounds(thumbRect, trackRect: trackRect, value: 0.0)
Run Code Online (Sandbox Code Playgroud)
目前图像大约是40pt到40pt(它是一个圆圈).我希望图像在24pt到24pt左右.
此外,这是在XCode 7上的Swift 2中.我理解这些方法适用于iOS8.0或更高版本,这是我的部署目标.
我正在使用AVPlayer播放视频。我遵循了此视频教程,让我们构建该应用程序
我使用UISlider / scrubber以及视频的当前帧/时间。
我有一个10.43秒的视频,并且我使用了快进功能,将我带到了尽头。
@objc fileprivate func fastForwardButtonTapped() {
guard let playerItem = playerItem else { return }
guard let player = player else { return }
let duration: Float64 = CMTimeGetSeconds(playerItem.duration)
let seekTime: CMTime = CMTimeMakeWithSeconds(duration, 1)
player.seek(to: seekTime)
}
Run Code Online (Sandbox Code Playgroud)
视频播放到最后,但问题是滑块仅到达10秒点,而我无法到达最后的0.43秒。我收到以下警告消息:
滑块的值在中确定。player?.addPeriodicTimeObserver()因此,当我快速向前按而不是滑块到达终点时,它会停止几个点的距离(请注意空白):
如何获得更准确的值,以便滑块可以一直擦洗到底?
playerItem?.addObserver(self, forKeyPath: #keyPath(AVPlayerItem.status),
options: [.old, .new],
context: &playerItemContext)
let interval = CMTime(value: 1, timescale: 2)
timeObserverToken = player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: {
[weak self] (progressTime) in
let seconds = CMTimeGetSeconds(progressTime)
let …Run Code Online (Sandbox Code Playgroud)