😁
目录
一、编译报错/bin/sh: bad interpreter: Operation not permitted Command PhaseScriptExecution failed with a nonzero exit code
二、如何获取UISlider滑杆的中心位置
一、编译报错:xx/bin/sh: bad interpreter: Operation not permittedCommand PhaseScriptExecution failed with a nonzero exit code
问题纪要:
由于想看看一下SJVideoPlayer框架源码以及示例,结果下载之后报错/bin/sh: bad interpreter: Operation not permitted Command PhaseScriptExecution failed with a nonzero exit code
,尝试pod install 以及pod updata 依然无效,还是报这个错误好奇怪,也不知道为何会报没有执行权限的问题
解决办法:在工程根目录,用这个命令来去除这个属性:
xattr -d -r com.apple.quarantine ./*
二、如何获取UISlider滑杆的中心位置
效果图.gif
分享这个的解决方案思路:
在分析之前,先安利一个UI调试库(LookinServer
) ,开发必备神器。反正我经常会用到这个。不得不说这个真的很实用。在Podfile
中导入
# UI 调试库
pod 'LookinServer', :git => 'https://gitee.com/chuansong16/LookinServer.git', :configurations => ['Debug']
其次就是需要下载一个Lookin
的软件。从而查看他的层次结果,从而在结构中我们能发现其底层是用UIImageView去承载滚动的那个轴。
image.png
具体实现如下代码:
/// ***slider初始化xxx代码,然后添加事件
slider.addTarget(self, action:#selector(seliderProgress(_:)) , for: .valueChanged)
// 美颜度进度事件
@objc private func seliderProgress(_ slider: UISlider) {
setupBeautyProgressConstraints()
let integerValue = Int(slider.value)
beautySlider.value = Float(integerValue)
beautyProgressLabel.text = "\(integerValue)"
print("===== value:\(integerValue)")
}
/// 更新滑杆值label的约束
private func setupBeautyProgressConstraints(){
if let elementClass = NSClassFromString("_UISlideriOSVisualElement"),
let imageClass = NSClassFromString("UIImageView"){
for tempView in beautySlider.subviews where tempView.isKind(of: elementClass) {
for tempImgView in tempView.subviews where tempImgView.isKind(of: imageClass) {
beautyProgressLabel.snp.remakeConstraints{
$0.centerX.equalTo(tempImgView.snp_centerX)
$0.centerY.equalTo(tempImgView.snp_centerY).offset(-20)
}
}
}
}
}