我有一个应用程序可以从多个ARFrame. 用于捕获图像的相机似乎具有动态白平衡,并且可以在捕获会话的中间更改它。
如何配置 ARView、ARSession 或 ARCamera 以强制其在会话期间锁定白平衡?
我可以访问以下参数,但没有看到与白平衡相关的任何内容。
var arView: ARView!
let session: ARSession = arView.session
var sampleFrame: ARFrame = session.currentFrame!
let camera = sampleFrame.camera
func configureSessionAndRun() {
arView.automaticallyConfigureSession = false
let configuration = ARWorldTrackingConfiguration()
configuration.sceneReconstruction = .meshWithClassification
configuration.frameSemantics = .smoothedSceneDepth
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
arView.session.run(configuration)
}
Run Code Online (Sandbox Code Playgroud) 我有一个 iOS 点云应用程序,并试图允许用户在多个会话中不断向现有点云添加点。
我有一个 Metal MTKView,覆盖并与ARView下面对齐。当我的.showSceneUnderstanding启用,我可以验证金属视图的点云的网格相匹配ARView。
我可以通过归档和取消归档ARWorldMap并将其分配给ARView 来恢复 ARView 的世界状态initialWorldMap。经过一些设备旋转,场景将匹配来自 ARWorldMap 的锚点,并显示适当的场景理解。我还有一个由 XYZ 定义的点云。
如何让 MTKView 中的相机与 ARView 中的当前相机方向相对应?
换句话说,我可以恢复现有的世界地图并显示它,但让 ARView 从不同的、非原始视口和相机位置显示场景。当我恢复点云时,原点设置为当前设备位置/方向,点云与现实世界失去对齐。
如何获取 ARView/ARWorldMap/ARFrame 相机位置并定位我的点云,以便我在 MTKView 中的视口将正确显示点云的一部分,该部分对应于 的这个视口ARView?
arView.debugOptions.insert(.showSceneUnderstanding)
func preloadWorld(for configuration: ARWorldTrackingConfiguration) {
guard let restoredMap: ARWorldMap = GeometryManager<ARWorldMap>().value else {
return
}
configuration.initialWorldMap = restoredMap
//
}
Run Code Online (Sandbox Code Playgroud)
这是捕获相机位置的代码:
static func create(with frame: ARFrame, viewportSize: CGSize) -> PointCloudUniforms {
var uniforms = PointCloudUniforms.defaults
uniforms.viewportWidth = Float(viewportSize.width)
uniforms.viewportHeight …Run Code Online (Sandbox Code Playgroud) 我想知道我的应用是否在连接外部电源线的情况下运行.是否有可能在运行时找到这种状态?
一个额外的问题:这是否能够区分真正的USB电源和那些外部"电池组"?
谢谢!
我有一个使用自动引用计数的类.在课堂上,我有一个如下所述的财产.当我为班级设置提醒时,我希望发生更改按钮标题的副作用.
这是我的代码:
在.h文件中:
@property(nonatomic,strong)Reminder* reminder;
Run Code Online (Sandbox Code Playgroud)
在.m文件中:@synthesize提醒;
-(void)setReminder:(Reminder *)reminder_
{
//what else do I need to do here?
reminder = reminder_;
if(!reminder.useSound.boolValue)
{
onOffButton.title = NSLocalizedString(@"Off", @"Off title");
}else
{
onOffButton.title = NSLocalizedString(@"On", @"On title");
}
}
Run Code Online (Sandbox Code Playgroud)
我知道没有ARC,我会做这样的事情:
-(void)setReminder:(Reminder *)reminder_
{
[reminder release];
reminder = [reminder_ retain];
if(!reminder.useSound.boolValue)
{
onOffButton.title = NSLocalizedString(@"Off", @"Off title");
}else
{
onOffButton.title = NSLocalizedString(@"On", @"On title");
}
}
Run Code Online (Sandbox Code Playgroud)
我是否需要在启用ARC的setter方法中执行任何其他操作以确保正确保留强变量?
memory-management objective-c ios ios5 automatic-ref-counting
我正在尝试调试我的应用程序.
我一直在我的非弧代码中使用一些NSTimer实例(来自主线程):
[NSTimer scheduledTimerWithTimeInterval:5 target:musicPlayer selector:@selector(playPause:) userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)
如果我将此代码分配给按钮并单击按钮,这可以正常工作.计时器开火.
我也尝试过:
if( self.deliveryTimer == nil)
{
self.deliveryTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(playPause:) userInfo:nil repeats:NO];
}
-(void)playPause:(NSTimer*)timer
{
[deliveryTimer invalidate];
deliveryTimer = nil;
//more code here
}
Run Code Online (Sandbox Code Playgroud)
我希望定时器执行,按下面的播放/暂停方法,然后转到nil,这样我可以稍后重置定时器.我检查nil的原因是因为我有3个不同的代码路径可以设置定时器.每个都有一个NSLog语句,表明已经安排了计时器.
我的代码运行,我看到计时器正在安排,但它们似乎没有在正常的应用程序执行过程中触发.我正在调查原因.短期计时器,使用相同的逻辑火.当我让应用程序运行一段时间时,我遇到了问题.
ARC能否收回NSTimers?
如果我从performSelectorInBackground设置计时器是否重要?当我写这个问题时,我注意到我的一些计时器是通过一个被调用的代码路径创建的:
[self performSelectorInBackground:@selector(notifyDelegateOfDataPoint:) withObject:data];
Run Code Online (Sandbox Code Playgroud)
背景选择器可能是我的计时器之前没有开火/回收的原因吗?
任何帮助表示赞赏,这个bug已经困扰了我超过2周!
更新:更改代码以使用 NSTimers 的主线程后,计时器正确触发,导致音乐播放:
[self performSelectorOnMainThread:@selector(deliverReminder:) withObject:nil waitUntilDone:NO];
-(void)deliverReminder:(id)sender{
[ NSTimer scheduledTimerWithTimeInterval:10 target:reminderDeliverySystem selector:@selector(playAfterDelay:) userInfo:nil repeats:NO];
[self postMessageWithTitle:nil message:@"Deliver Reminder Called" action:kNoContextAction];
}
-(void)playAfterDelay:(id)sender
{
int reminderDelay = reminder.delayValue.intValue;
[playTimers addObject:[NSTimer scheduledTimerWithTimeInterval:reminderDelay target:self …Run Code Online (Sandbox Code Playgroud) 我试图让我的应用程序的用户使用滑块取消活动闹钟,如计时器应用程序或iPhone锁定屏幕.
作为开发人员,我们可以使用此控件吗?如果是这样,它的名称是什么,我是否需要以编程方式添加它?我在界面构建器中没有看到它.
谢谢!
我正在尝试创造一种新型的旋转控制装置,其外观和感觉是一个支撑在销钉上的真正巨大的轮子,能够围绕它的中心点旋转并具有一定程度的阻尼,这最终会使车轮停止.想想"幸运之轮".

使用本机UITableView和/或UIScrollView时,可以在一个方向上"轻弹"它们并继续向该方向滚动一段时间.我知道动画曲线可以达到类似的效果.
我感兴趣的是如何根据手指行进的距离/速度计算界面元素应滚动/旋转的距离.不同类型的"轻弹"会通过将"动量"转移到方向盘而产生不同的行为.有人可以提出这种计算的例子吗?
我特别感兴趣的是将相同的惯性概念应用于如下所述的定制旋转控制:堆栈溢出的旋转控制.当前示例,甚至示例中提到的转换器应用程序都不使用惯性.车轮只需跟随手指即可锁定到预定位置.我想让类似的车轮感觉它具有真正的质量,因此它可以被轻弹并且将以可预测的方式旋转直到平稳停止.(想想"幸运之轮"式表示).
我怎样才能实现这种"命运之轮"基于惯性的旋转控制行为,使控制感觉它具有真正的质量?
谢谢!
我正在使用AVCaptureSession从相机捕获图像:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
Run Code Online (Sandbox Code Playgroud)
图像将转换为UIImage并添加到图像视图中.正如预期的那样,图像以纵向显示.
我正在尝试将图像保存到捕获会话之间的核心数据中.我的核心数据实体具有二进制数据类型的图像属性.
coreDataEntity.image = UIImagePNGRepresentation(imageView.image);
Run Code Online (Sandbox Code Playgroud)
用户重新加载以前保存的会话后,图像视图将使用以下方式恢复其图像:
imageView.image = [UIImage imageWithData:coreDataEntity.image];
Run Code Online (Sandbox Code Playgroud)
但是,恢复的图像逆时针旋转90度,顶部指向左侧.
图像在哪个点旋转?是在保存期间还是从核心数据加载期间?
我有一种方法可以将UIImage旋转90度,但是在后续重新加载同一图像时,它会旋转90度.我怎么知道我已经旋转了一次UIImage?
感谢您的任何帮助!
我正在尝试在后台下载一些JSON对象,并且正在进行相当多的多线程.一旦操作完成,我注意到这个断言失败了:
NSAssert([user.managedObjectContext isEqual:[AppUser managedObjectContext]],@"Different contexts");
Run Code Online (Sandbox Code Playgroud)
如何将更改合并到[AppUser managedObjectContext]定义的主上下文中?
我需要添加一个4位数的引脚视图控制器,它将"悬停"在我的应用程序的主窗口上,并防止不知道该引脚的用户浏览应用程序中的数据.
我很感兴趣,如果有任何演示项目或开源项目完成此功能(按键点击,自动更改焦点,显示静态光泽键盘,锁定x秒后).
谢谢您的意见!