我正在制作一个图像滑块,该滑块每2秒自动滑动一次。我编写的代码可立即移动到下一张没有幻灯片动画的图像,我想通过显示scrollview滚动以某种方式修复它,这是我的代码:
var imagesArray = [UIImage]()
static var i = 0
override func viewDidLoad() {
super.viewDidLoad()
imagesArray = [image1, image2, image3, image4]
for i in 0..<imagesArray.count{
let imageview = UIImageView()
imageview.image = imagesArray[i]
imageview.contentMode = .scaleAspectFit
let xPosition = self.view.frame.width * CGFloat(i)
imageview.frame = CGRect(x: xPosition, y: 0, width: self.imagesScrollView.frame.width, height: self.imagesScrollView.frame.height)
imagesScrollView.contentSize.width = imagesScrollView.frame.width * CGFloat(i+1)
imagesScrollView.addSubview(imageview)
}
}
override func viewDidAppear(_ animated: Bool) {
let scrollingTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(MenuViewController.newStartScrolling), userInfo: nil, repeats: true)
scrollingTimer.fire()
func …Run Code Online (Sandbox Code Playgroud) 我终于设法建立了通用链接,如果我点击该链接,它将打开我的应用程序。但不会在继续用户活动或源应用程序中显示。因为我想将其重定向到特定的视图控制器。我打开“ https:// www.myWeb.com/forgotPassword”的示例
它将重定向到forgotPasswordViewController,我需要阅读链接。
为什么它在继续的用户活动中不显示
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
print(url)
let urlHost : String = url.host as String!
print("HELLO")
let main : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let inner : ResetPasswordViewController = main.instantiateViewController(withIdentifier: "ResetPasswordViewController") as! ResetPasswordViewController
self.window?.rootViewController = inner
self.window?.makeKeyAndVisible()
return true;
}
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url)
print("HELLO WORLD")
} …Run Code Online (Sandbox Code Playgroud) 嗨,我想从“ 2017-07-31T11:40:00.000Z”获得11:40的时间
以下是我正在使用的代码:
let formatter = Foundation.DateFormatter()
formatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.sssZ" //2017-04-01T18:05:00.000
let date1 = formatter.date(from: data.arvTime)
print("date:\(String(describing: date1))")
let dateFormatterPrint = Foundation.DateFormatter()
dateFormatterPrint.dateFormat = "HH:mm"
let resultTime = dateFormatterPrint.string(from: date1!)
print("time:\(String(describing: resultTime))")
Run Code Online (Sandbox Code Playgroud)
将时间设为1:29,即我错了时间
请帮我解决这个问题。
我是Swift的新手,我正试图制作定时器(在标签中),按下按钮开始长按.同时我想按长按按钮更改长按按钮图像.我留下按钮,我希望按钮恢复原状.
可能有什么问题?
@IBOutlet weak var myBtn: UIButton!
func initGesture()
{
{ let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap(_:)))
myBtn.addGestureRecognizer(longGesture)
}
}
func TimerAction()
{
Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(longTap), userInfo: nil, repeats: false)
myBtn.setImage(UIImage(named: "xxx.png"), for: .normal)
}
@IBOutlet weak var lbl: UILabel!
func start()
{
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController2.updateTime as (ViewController2) -> () -> ())), userInfo: nil, repeats: true)
}
func updateTimer () {
count += 1
let hours = Int(count) / 3600
let …Run Code Online (Sandbox Code Playgroud) 我有以下功能.我正在尝试将allItems数组传递给完成块requestItems,但是我发现它崩溃,因为它说它是零.我删除了完成以检查它item是否有值,它确实存在.
这意味着完成在for循环之前执行.
还有另一种方法吗?类似于Javascript中的Promises,它将在for循环结束时执行完成.
func requestItems(_ data: [String: Any], completion: (Bool, [Item]) -> Void) {
var allItems = [Item]()
for i in data["all"] {
Routes.instance.getRequest(requestType: "items", params: nil, id: someId, completion: { item in
var it = Item(item["name"] as! String)
allItems.append(it)
})
}
completion(true, allItems)
}
func getRoutes(requestType: String, parameters: [String: Any]?, id: String, completion: @escaping ([[String:Any]]) -> Void) {
DispatchQueue.main.async {
if id == "" {
self.url = "\(URL_BASE)/\(requestType)"
} else {
self.url = "\(URL_BASE)/\(requestType)/\(id)"
} …Run Code Online (Sandbox Code Playgroud) 我已使用以下代码从下载视频URL。下载视频效果很好。
func downloadVideo(){
Alamofire.request("https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4").downloadProgress(closure:{ (progress) in
print(progress.fractionCompleted)
self.progressView.progress = Float(progress.fractionCompleted)
}).responseData{ (response) in
print(response.result)
print(response.result.value!)
print(response.result.description)
if let data = response.result.value {
let obj = String(data: data, encoding: .utf8)
let player = AVPlayer(url: URL(string: obj!)!)
self.playerController.player = player
self.addChildViewController(self.playerController)
self.view.addSubview(self.playerController.view)
self.playerController.view.frame = self.view.frame
player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
但我想在播放此视频 AVPlayer
我发现“可能是视频”下载为NSData。是正确的。?下载完成后,任何人都可以帮助我如何播放此视频吗?
如果有人可以建议一些其他代码供您使用进度条下载视频,然后在Swift 3.0中播放它,那将是很好的。
TIA。
我在PDFView中加载PDF文件但无法从Bundle获取PDF文件URL.
请检查以下代码:
let pdfView = PDFView(frame: self.view.bounds)
let myFileName = "sample"
guard let url = Bundle.main.url(forResource: myFileName, withExtension: "pdf") else {
return
}
pdfView.document = PDFDocument(url: url)
self.view.addSubview(pdfView)
Run Code Online (Sandbox Code Playgroud)
每次我nil进去url.
编辑:
这是我的项目窗口:
我犯了什么傻话吗?
请指导我.
提前致谢.
这就是我保存图像的方式
let format = DateFormatter()
format.dateFormat="MMMM-dd-yyyy-ss"
let currentFileName = "\(format.string(from: Date())).img"
print(currentFileName)
// Save Images
let fileMgr = FileManager.default
let dirPath = fileMgr.urls(for: .documentDirectory, in: .userDomainMask)[0]
let imageFileUrl = dirPath.appendingPathComponent(currentFileName)
do {
try UIImagePNGRepresentation(returnedImages)!.write(to: imageFileUrl)
print("Image Added Successfully")
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
下面是我用来检索图像的代码,但是我正在获取URL而不是图像文件来填充tableview。任何帮助,将不胜感激
let fileManager = FileManager.default
let imageUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask) [0].appendingPathComponent("img")
print("Your Images:\(imageUrl)")
Run Code Online (Sandbox Code Playgroud) 我从webservice获得了一个特殊的双号,比如来自webservice的0.097或0.034.因此,如果我得到一个特定的数字,如0.56或0.5,我需要在0.56中加零,在0.5中加两个零.如何在swift3中执行此操作?目前我在做:
class func appendString(data: Int) -> String {
let value = data
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 3 // for float
formatter.maximumFractionDigits = 3 // for float
formatter.minimumIntegerDigits = 1
formatter.paddingPosition = .afterPrefix
formatter.paddingCharacter = "0"
return formatter.string(from: NSNumber(floatLiteral: Double(value)))!
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何实现上述告诉逻辑?
我在视图控制器上为我的UIToolBar/Accessory View设置了以下设置
@IBOutlet var inputFieldView: UIToolbar!
override var canBecomeFirstResponder: Bool{
return true
}
override var inputAccessoryView: UIView?{
return self.inputFieldView
}
Run Code Online (Sandbox Code Playgroud)
然后在我的viewDidLoad里面我有:
let seperator = UIView(frame: CGRect(x:0 , y: 0, width: ScreenSize.width(), height: 1))
seperator.backgroundColor = UIColor.lightBackground
self.inputFieldView.addSubview(seperator)
self.inputFieldView.isTranslucent = false
self.inputFieldView.setShadowImage(UIImage(), forToolbarPosition: .any)
self.inputFieldView.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
self.inputFieldView.removeFromSuperview()
Run Code Online (Sandbox Code Playgroud)
这对于ios版本10和9非常有用.它是带有"发送"按钮的文本视图.它位于屏幕的底部,按下后,成为第一响应者,允许键盘上升并正确定位.
使用ios 11时,我甚至无法在底部点击它,所以我根本无法打字.