我的应用程序使用深色导航栏颜色.因此我将状态栏颜色设置为白色(因此它具有很好的对比度).
我通过将barStyle设置为黑色(使状态栏变为白色)并将barTint设置为深红色来完成此操作.完美的工作.
我提出这样的一个SafariViewController
:
func openWebsite(urlString: String) {
if let url = NSURL(string: urlString) {
let svc = SFSafariViewController(URL: url)
svc.delegate = self
self.presentViewController(svc, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,呈现的状态栏SafariViewController
仍为白色.这是一个问题,因为SVC
导航栏具有默认的白色透明iOS默认样式.所以状态栏基本上是不可见的.
我该如何解决这个问题?
根据Apple的说法,刷新控件应该是iOS 11中大标题导航栏的一部分.
当我在故事板中为UITableViewController启用刷新控件时,刷新控件是导航栏的一部分(在拉动刷新时).
我不能在故事板中为所有其他视图(如UICollectionViewController)执行此操作.当我在代码中添加刷新控件作为子视图时,它不是导航栏的一部分:
refreshControl = UIRefreshControl()
collectionView?.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
如何在我的自定义滚动视图(如UICollectionViewController)中添加刷新控件,以便在使用大标题时导航栏中显示刷新控件?
我在Swift中定义了一个属性,如:
var foo : String {
didSet {
doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
因此,每次我设置foo
就像foo = "bar"
我didSet
将被执行.
但是我无法找到正在执行的线程 didSet
.
例如,在这种情况下会发生什么:
dispatch_async(some_queue, { () -> Void in
self.foo = "bar"
})
Run Code Online (Sandbox Code Playgroud)
这将导致didSet
代码被执行.将didSet
继续运行some_queue
或始终运行main_queue
?
我使用AVPlayer通过互联网播放音频直播.如果暂停时间超过1分钟,我喜欢恢复播放.
我打电话player.rate = 1.0
来恢复.但是,如果流暂停> 1分钟,则不再播放.在这种情况下,我需要重新创建AVPlayerItem以使其再次工作.
那我怎么能抓住这个案子,所以我知道播放没有恢复?
player.rate
.它保持不变1.0
.玩家不玩!currentItem.playbackBufferEmpty
.但是在这种情况下不会调用它.currentItem.status
没有切换到.Failed
.它根本没有变化.在这种情况下,AVPlayer似乎什么都不做.有任何想法吗?
我构建了一个Playground代码来演示这个问题:
import UIKit
import AVFoundation
// keep it running forever so it plays audio
import XCPlayground
XCPSetExecutionShouldContinueIndefinitely(true)
class AVPlayerTest {
let player = AVPlayer()
let streamurl = NSURL(string: "http://detektor.fm/stream/mp3/musik/")!
func startTest() {
let item = AVPlayerItem(URL: streamurl)
player.replaceCurrentItemWithPlayerItem(item)
player.play()
// give it some start time to build a buffer
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(timerTickedToPause), userInfo: nil, repeats: false) …
Run Code Online (Sandbox Code Playgroud) 当我的VoIP应用程序收到CallKit的呼叫时,iOS会显示本机系统调用UI.
如何为传出呼叫显示此本地呼叫视图?
我有两台服务器。我serverA
与Ansible合作。serverB
不通过Ansible管理。我希望serverA
能够获得serverB
通过复制ssh_pub_key
的serverA
到serverB
。
这可以手动调用来完成ssh-copy-id user@serverB
的serverA
。
我想serverA
自动启用Ansible 。
- name: Register ssh key at serverB
command: ssh-copy-id -i /home/{{user}}/.ssh/id_rsa.pub -o StrictHostKeyChecking=no user@serverB
Run Code Online (Sandbox Code Playgroud)
打电话ssh-copy-id
要求我输入user @ serverB的ssh密码,以便可以复制密钥。
我如何通过ansible做到这一点?我希望它在执行剧本时以交互方式询问user @ serverB密码。也可以选择将密码存储在ansible Vault中。那我仍然不知道如何避免交互式的密码调用ssh-copy-id
。
我还添加-o StrictHostKeyChecking=no
了呼叫,因为这是另一种交互,通常在调用ssh-copy-id时需要用户交互。
I use AVAudioPlayer to play audio. I have background audio enabled and the audio sessions are configured correctly.
I implemented the audioSessionGotInterrupted
method to be informed if the audio session gets interrupted. This is my current code:
@objc private func audioSessionGotInterrupted(note: NSNotification) {
guard let userInfo = note.userInfo,
let typeValue = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt,
let type = AVAudioSessionInterruptionType(rawValue: typeValue) else {
return
}
if type == .began {
print("interrupted")
// Interruption began, take appropriate actions
player.pause()
saveCurrentPlayerPosition()
}
else if …
Run Code Online (Sandbox Code Playgroud) 我目前正在开发iPhone应用程序.我现在有一个UITableView的顶部间距插入问题.看这个截图:
表格视图单元格和按钮之间不应有空格.
我不知道如何解决这个问题.UITableView嵌入在ContainerView中,如下所示:
我认为我的容器视图约束正确."顶部空间到章节"按钮设置为0
.
我试图在故事板中更改表视图控制器的一些设置.比如说Adjust Scroll View Insets
.但是当我禁用它时它不会改变任何东西.
我还尝试直接在代码中设置TableView insets viewDidLoad()
:
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
然而,这也没有解决它.
有人可以帮忙吗?我不知道在哪里看.
每当我的对象的单个键的值在解析云代码afterSave
挂钩中发生变化时,我都想发送推送通知。
Parse.Cloud.afterSave("Channel", function(request) {
var channel = request.object
// TODO: check if value of channel key "state" was changed
});
Run Code Online (Sandbox Code Playgroud)
如何检查密钥的值是否state
已更新?
这是我可以从request
对象中获得的所有数据:http : //parseplatform.org/Parse-SDK-JS/api/v1.11.0/Parse.Cloud.html#.TriggerRequest
该线程中建议的解决方案感觉不对:Parse Javascript API Cloud Code afterSave with access to beforeSave values
我知道我可以通过beforeSave
钩子中的脏方法来做到这一点。但是,这对我不起作用。为什么?如果我确实向许多用户发送推送通知,这需要一些时间。接收推送通知的客户端开始从服务器请求更新的频道对象。然而,他们可能会收到旧版本的对象,因为只要beforeSave
尚未完成发送所有推送,通道对象就不会持久保存在数据库中。
javascript after-save before-save parse-cloud-code parse-server
我在项目中使用 AlamofireImage 来将图像设置为 UIImageView:
let imageView = UIImageView(frame: frame)
let URL = NSURL(string: "https://httpbin.org/image/png")!
imageView.af_setImageWithURL(URL)
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中的某个时刻,我需要直接获取图像,因为我想做一些其他事情,而不是将其设置为 UIImageView。AlamofireImage 提供了ImageDownloader
此用例:
let downloader = ImageDownloader()
let URLRequest = NSURLRequest(URL: NSURL(string: "https://httpbin.org/image/jpeg")!)
downloader.downloadImage(URLRequest: URLRequest) { response in
print(response.request)
print(response.response)
debugPrint(response.result)
if let image = response.result.value {
print(image)
}
}
Run Code Online (Sandbox Code Playgroud)
这两个案例有相同之处 AutoPurgingImageCache
吗?
imageView.af_setImageWithURL(URL)
我想与AlamofireImage的AutoPurgingImageCache一起使用。
如何通知我已af_setImageWithURL
获取图像,以便将其放入缓存中?因为这是在后台完成的。
我更喜欢这样的东西:imageView.af_imageFromCache(URL)
如果图像已经存在,则从缓存中设置图像,否则异步下载,然后设置图像并将其保存在缓存中。
ios ×8
swift ×3
alamofire ×2
avplayer ×2
caching ×2
after-save ×1
ansible ×1
avplayeritem ×1
before-save ×1
callkit ×1
closures ×1
colors ×1
image ×1
ios11 ×1
iphone ×1
javascript ×1
parse-server ×1
ssh ×1
statusbar ×1
storyboard ×1
uiimageview ×1
uitableview ×1
voip ×1