这就是我嵌入视频的方式.它在模拟器中有声音,但在真实设备上没有声音(iOS 9.0.2(13A452))Xcode 7.1.1.
这是我用来播放它的代码:
if let youtubeID = youtubeID {
let embededHTML = "<html><body><iframe src=\"http://www.youtube.com/embed/\(youtubeID)?playsinline=1\" width=\"\(width)\" height=\"\(height)\" frameborder=\"0\" allowfullscreen></iframe></body></html>"
cell!.webView.allowsInlineMediaPlayback = true
cell!.webView.scalesPageToFit = true
cell!.webView.mediaPlaybackAllowsAirPlay = true
cell!.webView.mediaPlaybackRequiresUserAction = false
cell!.webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().bundleURL)
}
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
var data = [list]()
var filtered = [list]()
struct list {
var label1 : String = ""
var label2 : String = ""
var label3 : String = ""
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filtered = data.filter { $0.label1.localizedCaseInsensitiveCompare(searchText) }
if(filtered.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
我从 sql 查询结果添加到列表,它们看起来很好,但是当我尝试实现搜索功能时,我无法构建它并出现错误:
无法将“ComparisonResult”类型的值转换为关闭结果类型“Bool”
我在 UIViewController 中有一个表视图,启用了编辑功能以删除行。从右侧滑动可以删除行,并且导航栏上有编辑按钮,但除了从“编辑”切换到“完成”之外,它实际上没有执行任何操作。
这是我创建表视图的方法。
override func viewWillAppear(animated: Bool) {
for view in self.view.subviews {
view.removeFromSuperview()
}
if sharedCart.shoppingCart.isEmpty {
self.navigationItem.rightBarButtonItem = nil
isEmptyLabel = UILabel(frame: CGRectMake(self.view.frame.width / 2, self.view.frame.height / 2, self.view.frame.width, self.view.frame.height))
isEmptyLabel.center = self.view.center
isEmptyLabel.text = "Your cart is empty."
isEmptyLabel.textAlignment = .Center
isEmptyLabel.textColor = UIColor.whiteColor()
isEmptyLabel.font = UIFont(name: "Helvetica-Light", size: 20.0)
self.view.addSubview(isEmptyLabel)
} else {
isEmptyLabel.removeFromSuperview()
total = 0
let editItem = self.editButtonItem()
self.navigationItem.rightBarButtonItem = editItem
tableView = UITableView(frame: self.view.frame, style: .Grouped)
tableView.delegate = self
tableView.dataSource = …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码来显示文档选择器。当我显示选择器时,我使用下面的代码
let documentPickerController = UIDocumentPickerViewController(documentTypes: [String(kUTTypeText), String(kUTTypePDF), String(kUTTypePNG), String(kUTTypeJPEG), String(kUTTypePlainText), String(kUTTypeImage)], in: .import)
Run Code Online (Sandbox Code Playgroud)
上面的代码向我显示了iCloud中的所有文件,但不允许我选择doc,docx文件。这些文件显示为已禁用。
但是当我"public.data"在UIDocumentPickerViewController构造函数中添加为元素时,它允许我选择doc,docx文件和文件未显示为已禁用。
请告诉我为什么会这样吗?
我想使用自定义视图 作为 UINavigationController 中留下的 UIBarButtonItem,是否可以删除此处的左侧填充?
我已经尝试过了:
let btn = UIButton()
btn.frame = CGRect(x: -50, y: -50, width: 44, height: 50)
btn.setImage(UIImage(name:"img").withRenderingMode(.alwaysTemplate), for: .normal)
btn.addTarget(self, action: #selector(openSetting), for: .touchUpInside)
let leftButtonBar = UIBarButtonItem(customView: btn)
self.navigationItem.leftBarButtonItems = ( [leftButtonBar , otherBtn ])
Run Code Online (Sandbox Code Playgroud)
如何删除剩余空间设置图标
更新。厌倦了这段代码:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height:
view.backgroundColor = .gray
let btn = UIButton()
btn.frame = CGRect(x: -15, y: 0, width: 44, height: 50)
btn.setImage(UIImage(name:"img").withRenderingMode(.alwaysTemplate), for: .normal)
btn.addTarget(self, action: #selector(DashboardTabBarController.openSetting), for: .touchUpInside) …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数组:
var similarObjects: [Objects] = []
我如何才能看到他的变化:
similarObjects = someArray
我尝试:(结果:下一步 -> 完成)
_ = Observable.just(similarObjects)
.subscribe({ event in
return print(event.element)
})
Run Code Online (Sandbox Code Playgroud) 现在如果我想将左侧和右侧的边距设置为相等,则需要两行:
label.snp.makeConstraints { make in
make.left.equalTo(Constants.margin)
make.right.equalTo(-Constants.margin)
}
Run Code Online (Sandbox Code Playgroud)
API 还允许我使用以下命令一次设置所有 4 个(左/右/上/下)边缘:
label.snp.makeConstraints { make in
make.edges.equalTo(Constants.margin
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能编写一个允许这样的扩展?
label.snp.makeConstraints { make in
make.horizontalMargins.equalTo(Constants.margin)
}
Run Code Online (Sandbox Code Playgroud)
结果应等于第一个代码片段。
我有一个视图控制器(包含我的菜单)呈现在另一个视图控制器(我的应用程序)之上.
我需要从呈现的视图控制器(我的菜单)访问呈现视图控制器(在我的菜单下面),例如访问一些变量或使呈现视图控制器执行其中一个segue.
但是,我只是想不通怎么做.我知道"presentsViewController"和"presentsViewController"变量,但我没有设法成功使用它们.
任何的想法 ?
代码(来自提供的VC,作为引用窗口的AppDelegate的引用):
if let presentingViewController = self.appDelegate.window?.rootViewController?.presentingViewController {
presentingViewController.performSegue(withIdentifier: "nameOfMySegue", sender: self)
}
Run Code Online (Sandbox Code Playgroud) 这并不是纯粹的好奇心,我可能会误解一些关于Swift中弱引用的东西。
假设我从View Controller创建一个类,并将其引用传递给初始化程序:
class = MyClass(vc: self)
Run Code Online (Sandbox Code Playgroud)
由于情节提要和窗口已经保留了对该View Controller的引用,因此MyClass对它的弱引用似乎是合乎逻辑的(出于类似原因,默认情况下,在IB中创建的所有引用都是弱的):
class MyClass: NSObject {
private weak var viewController: UIViewController
init(vc: UIViewController) {
self.viewController = vc
super.init
}
func setViewController(_ vc: UIViewController) {
self.viewController = vc
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码会产生编译错误,因为viewController变量不是可选的。所以我必须加'!' 查看viewController声明并删除初始化程序,仅留下setViewController看起来不太自然的内容。
禁止非可选的弱数据的背后原因是什么?
macOS Catalina 提供了一种访问/拒绝文件和文件夹的新方法。
突然,我拒绝了SimulatorTrampoline对我的Documents文件夹的访问请求,并且可以将其取回。
此外,安全和隐私 > 隐私 Full Disk Access并且Files and Folders不包含有关此拒绝请求的任何信息。
基本上,问题是如何重新添加此权限?也许某种 bash 脚本可以在这里提供帮助?