嘿,我想弄清楚.如何保持一个简单的节点.当我在ARKit中走动时
码:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if let planeAnchor = anchor as? ARPlaneAnchor {
if planeDetected == false { // Bool only allows 1 plane to be added
planeDetected = true
self.addPlane(node: node, anchor: planeAnchor)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会添加SCNNode
func addPlane(node: SCNNode, anchor: ARPlaneAnchor) {
// We add the anchor plane here
let showDebugVisuals = Bool()
let plane = Plane(anchor, showDebugVisuals)
planes[anchor] = plane
node.addChildNode(plane)
// We add our custom SCNNode here
let …Run Code Online (Sandbox Code Playgroud) 我已经完成了一个单击识别器,但无法弄清楚如何将该单击识别器改为双击.我可以使用一些指导.
码:
import Foundation
import UIKit
class MainBoardController: UIViewController{
let tap = UITapGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var swipe: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "GotoProfile")
swipe.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipe)
tap.addTarget(self, action: "GotoCamera")
view.userInteractionEnabled = true
view.addGestureRecognizer(tap)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func GotoProfile(){
self.performSegueWithIdentifier("Profilesegue", sender: nil)
}
func GotoCamera(){
self.performSegueWithIdentifier("Camerasegue", sender: nil)
}
}
Run Code Online (Sandbox Code Playgroud) 我试着简单地调用一个名为"GoToNewShoot"的函数当用户按下"确定"按钮时,警报弹出谢谢!
码:
@IBAction func GobacktoCamera(sender: AnyObject) {
var alertController = UIAlertController(title: "Just Checking", message: "Are You Sure You Want to Start over ", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 我试图让我的代码没有警告。因为我刚刚更新了 Xcode,并且知道收到警告信号。我也尝试在下面解决这个问题。
这是给我警告的代码:
代码:
extension float4x4 {
var translation: float3 {
return float3(columns.3.x, columns.3.y, columns.3.z)
}
init(translation vector: float3) {
self.init(float4(1, 0, 0, 0),
float4(0, 1, 0, 0),
float4(0, 0, 1, 0),
float4(vector.x, vector.y, vector.z, 1))
}
}
extension float4 {
var xyz: float3 {
return float3(x, y, z)
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试翻译的内容如下:
代码:
extension SIMD4 {
var translation: SIMD3<Float> {
return SIMD3(columns.3.x, columns.3.y, columns.3.z)
}
init(translation vector: SIMD3<Float>) {
self.init(SIMD4<Float>(1, 0, 0, 0),
SIMD4<Float>(0, 1, 0, 0),
SIMD4<Float>(0, 0, 1, 0), …Run Code Online (Sandbox Code Playgroud) 嘿我想弄清楚如何将变量设置为空类的类型.如果这不是一个错误,请像这样:
码:
var PlayerEquipped = class() // failed attempt at trying set up a blank variable that can take the type of a class
Run Code Online (Sandbox Code Playgroud)
或者制作一个我可以在将来改变的变量.所以基本上我可以创建一个这样的全局变量,并为其分配一个没有问题的类.
码:
var PlayerEquipped = House()
//In another .swift file i have the 2 classes
class House {
init() {
}
}
class House2 {
init() {
}
}
Run Code Online (Sandbox Code Playgroud)
但即使它设置为"var"我仍然会在尝试将"SelectClass"变量更改为其他类时出错.例如,如果我要创建一个带有文本"Hello"in in side的字符串变量,那么稍后在我的视图中,load负责决定将该变量文本更改为"GoddBye",它会让我这样做.但是,如果我尝试将"SelectedClass"变量更改为其他类,我会收到此错误.它说'不能分配saintsRB类型的值来键入saintsLB'代码:
var PlayerEquipped = House()
//down in view didload:
PlayerEquipped = House2() // Error here
Run Code Online (Sandbox Code Playgroud)
我有一个变量的释放问题:缓存
这是来自教程Reusable Image Cache in Swift
错误:
致命错误:尝试读取无主引用,但对象 0x280208080 已被释放致命错误:尝试读取无主引用,但对象 0x280208080 已被释放
代码:
final class ImageLoader {
private let cache = ImageCache()
func loadImage(from url: URL) -> AnyPublisher<UIImage?, Never> {
if let image = cache[url] {
return Just(image).eraseToAnyPublisher()
}
return URLSession.shared.dataTaskPublisher(for: url)
.map { UIImage(data: $0.data) }
.catch { error in return Just(nil) }
.handleEvents(receiveOutput: {[unowned self] image in
guard let image = image else { return }
self.cache[url] = image
})
.subscribe(on: DispatchQueue.global(qos: .background))
.receive(on: RunLoop.main)
.eraseToAnyPublisher()
} …Run Code Online (Sandbox Code Playgroud) 嘿,我正在尝试以不同的速率(较慢)播放视频。我似乎无法让它工作。
代码:
这行代码不起作用
playerLayerView.player?.rate = 0.50
Run Code Online (Sandbox Code Playgroud)
完整代码:
var player = AVPlayer()
var playerLayer = AVPlayerLayer()
var playerLayerView = AVPlayerViewController()
let path = Bundle.main.path(forResource: "Video", ofType: "mov")
let prl = URL(fileURLWithPath: path!)
player = AVPlayer(url: prl)
playerLayerView.player = player
playerLayerView.view.frame = CGRect(.frame.width * 0.0, .frame.height * 0.0, .frame.width, .frame.height)
playerLayerView.videoGravity = AVLayerVideoGravity.resizeAspectFill.rawValue
playerLayerView.player?.rate = 0.50
player.seek(to: kCMTimeZero)
player.isMuted = false
page.insertSubview(playerLayerView.view, at: 0)
playerLayerView.player?.play()
Run Code Online (Sandbox Code Playgroud)
唯一可以让它发挥作用的原因是。如果我使用 playImmediately 并删除 .Play()
player.playImmediately(atRate: 0.50) //.rate = 1.50 //0.50, 0.67, 0.80, 1.0, 1.25, 1.50, and 2.0
Run Code Online (Sandbox Code Playgroud) 您好,我有一个包含多个值的数组,我想尝试过滤掉搜索栏的索引。英语术语的一个例子就像。给我名称“Name2”的索引,并通过检查每个索引的第一个值中的所有字符串来执行此操作。
代码:
// Multiple Errors
var receivedList = [["Name1","Apple","Fresh"],["Name2","Orange","Rotten"],["Name3","Pear","Fresh"],["Name4","Grape","Rotten"]]
filteredData = data.filter({$0 == searchBar.text})
filteredData = receivedList.filter({$0 receivedList[1] == searchBar.Text})
//Im not really sure how to use this or if it's even useful
let searchPredicate = NSPredicate(format: "Orange CONTAINS[C] %@", searchText)
let array = (receivedList as NSArray).filtered(using: searchPredicate)
Run Code Online (Sandbox Code Playgroud)
我在这里检查了这些页面。
还有其他一些人,运气不好
嘿,我正在尝试创建一个 if 语句来遍历整个数组,然后询问该索引是否是数组中的最后一个。
这是我到目前为止所拥有的。
代码:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { // Called for each cell made
if notificationList[indexPath.row] == notificationList.last! {
print("At last index")
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
实际上我认为这可行,但我会采取其他答案