小编Nei*_*rov的帖子

设置UIScrollView以在3个视图控制器之间滑动

我正在尝试设置UIScrollView,以便我可以在我的3个视图控制器之间滑动.这是我在AppDelegate.m中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.;

UIScrollView *sv = [[UIScrollView alloc] init];

BarsViewController *bvc = [[BarsViewController alloc] init]; // Create BarsViewController
StopwatchViewController *svc = [[StopwatchViewController alloc] init]; // Create StopwatchViewController
TimerViewController *tvc = [[TimerViewController alloc] init]; // Create TimerViewController

[sv addSubview:bvc.view];
[sv addSubview:svc.view];
[sv addSubview:tvc.view];

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; // Hide status bar

self.window.rootViewController = sv;
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)

它在这一行上出错:

self.window.rootViewController = …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uiscrollview ios swift

14
推荐指数
1
解决办法
2万
查看次数

音频CMSampleBuffer的深层复制

我正在尝试创建一个CMSampleBuffer的副本,该副本由captureOutput在a中返回AVCaptureAudioDataOutputSampleBufferDelegate.

我遇到的问题是,captureOutput:didOutputSampleBuffer:fromConnection:在我保留CFArray了很长一段时间之后,来自委托方法的框架被丢弃了.

显然,我需要创建传入缓冲区的深层副本以供进一步处理.我也知道CMSampleBufferCreateCopy只会创建浅拷贝.

SO上提出的相关问题很少:

但它们都没有帮助我使用12个参数正确使用CMSampleBufferCreate函数:

  CMSampleBufferRef copyBuffer;

  CMBlockBufferRef data = CMSampleBufferGetDataBuffer(sampleBuffer);
  CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer);
  CMItemCount itemCount = CMSampleBufferGetNumSamples(sampleBuffer);

  CMTime duration = CMSampleBufferGetDuration(sampleBuffer);
  CMTime presentationStamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
  CMSampleTimingInfo timingInfo;
  timingInfo.duration = duration;
  timingInfo.presentationTimeStamp = presentationStamp;
  timingInfo.decodeTimeStamp = CMSampleBufferGetDecodeTimeStamp(sampleBuffer);


  size_t sampleSize = CMBlockBufferGetDataLength(data);
  CMBlockBufferRef sampleData;

  if (CMBlockBufferCopyDataBytes(data, 0, sampleSize, &sampleData) != kCMBlockBufferNoErr) {
    VLog(@"error during copying sample buffer");
  }

  // Here I tried data and sampleData CMBlockBuffer …
Run Code Online (Sandbox Code Playgroud)

objective-c avfoundation ios cmsamplebufferref swift

14
推荐指数
1
解决办法
1691
查看次数

如何在javascript中保存和恢复选择范围?

我想保存(序列化)Selection范围,以便在我UIWebViewiOS 应用程序的下一个用户会话中重用(反序列化)它。

用户路径

  1. 用户选择部分文本,点击保存
  2. 关闭内置移动浏览器
  3. 打开内置的移动浏览器并查看恢复的选择。

我的想法是首先通过调用获取范围window.getSelection().getRangeAt(0),然后保存其startContainer,endContainer属性。检查以下演示片段:

function saveSelectedRange() {  
  var highlightRange = window.getSelection().getRangeAt(0);
  
  var range = document.createRange();
  // ???
  console.log("start container: " + JSON.stringify(highlightRange.startContainer));
  console.log("end container: " + JSON.stringify(highlightRange.endContainer));

}
Run Code Online (Sandbox Code Playgroud)
#intro {
    font-size: 125%;
    color: green;
}

p.small {
    font-size: 75%;
}

#content {
    margin-left: 330px;
}

#buttons {
    left: 10px;
    position: fixed;
    border: solid black 1px;
    background-color: background:#C0ED72;
    padding: 5px;
    width: 300px;
}

html.ie6 #buttons …
Run Code Online (Sandbox Code Playgroud)

html javascript range selection

6
推荐指数
1
解决办法
2042
查看次数

无法将 WinRT/C++ 组件加载到我的 UWP/C# 应用程序

我需要将 WebRTC c++ 库包装到 WinRT 组件中,并从我的 UWP/C# 应用程序中使用它。有一篇很好的文章how to use native c++ in uwp描述了我遵循的所有集成步骤。简要地:

  • 我已经创建了 Dll/C++DLL1库并链接了我的静态库libwebrtc_full.a。打了所有必要的电话
  • 然后,我在我的 WinRT/C++ 项目中引用了 DLLWindowsRuntimeComponent1MyClass成功创建了公共引用类,这使得所有必要的调用来自DLL1
  • 我的 UWP 应用程序正确App1查看MyClass及其公共方法,App1引用了 WindowsRuntimeComponent。

在运行应用程序时,只要我尝试使用在 WindowsRuntimeComponent1

The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
Run Code Online (Sandbox Code Playgroud)

我创建并上传了一个示例项目以将我的问题重现到GDrivelibwebrtc.a在示例项目中也包含了我的静态数据,以防它是问题的根本原因。

我已经过上这样类似的问题去了,最相似的我的问题是这样的一个。不同之处在于我引用了该项目并且仍然得到相同的异常。

编辑1:

这是MyClass这样的:

namespace WindowsRuntimeComponent1
{
    public ref class MyClass sealed
    {
    public:
        MyClass(int sampleRate);
        virtual ~MyClass(); …
Run Code Online (Sandbox Code Playgroud)

c# c++ c++-cx winrt-component uwp

5
推荐指数
0
解决办法
168
查看次数

自定义容器视图控制器+故事板?

我想实现自己的容器视图控制器.请假设这是我的ipad

在此输入图像描述

一种通常的分割视图控制器,但我想扩展它:视图"a"的宽度应该可调整大小,当我点击视图'B'时 - 视图'C'进入可见区域

在此输入图像描述

例如,在我的故事板中,我有3个容器视图:AViewController(用于A视图),BViewController,CViewController和一个组合视图控制器(初始视图控制器).在组合视图控制器中,我将实现从容器视图嵌入segue并通过以下代码初始化容器视图之间的关系:

@property ... *aViewController,*bViewController,*cViewController;
    - (void)prepareForSegue:(UIStoryboardSegue *)segue
    sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@"EmbedAViewController"])
    {
    self.aViewController =
    segue.destinationViewController;
    }
    if ([segue.identifier isEqualToString:@"EmbedBViewController"])
    {
    self.bViewController=segue.destinationViewController
    }

   -(void)viewDidLoad
   {
     [super viewDidLoad];
     self.aViewController.bViewController=self.bViewController;
   }
Run Code Online (Sandbox Code Playgroud)

问题1:使用故事板实现我的作业是否正确? 问题2:容器视图有哪些限制?它是addChildViewController API的直观替代品吗?如果不是,我应该在哪里实现父母与子女的关系?我应该在prepareForSegue方法中使用我的组合视图控制器

 [self addChildViewController:aViewController]; 
    [self.view addSubview:aViewController.view];
Run Code Online (Sandbox Code Playgroud)

问题3:如何在开始时将容器视图放在可见区域之外?

如果我在某处犯了错误或对基本概念有很大的误解,请不要打败我.我做了很多google-foo,我真的很感激任何帮助.非常感谢提前!

编辑:
我想在所有人之间建立关系."B"视图的内容取决于"A",而"C"视图的内容取决于"B".

objective-c storyboard ipad uistoryboardsegue container-view

3
推荐指数
1
解决办法
3939
查看次数

在Alamofire请求后,我是否需要DispatchQueue.main来更新UI?

我正在学习有关使用的教程REST/web requests.在本教程中,我们正在开发一个Pokedex应用程序,我们使用API​​从API获取Pokemon详细信息Alamofire,然后在我们的UI中显示该数据.

这是相关的代码:

typealias DownloadComplete = (Bool) -> ()

// Model class
func downloadPokemonDetails(completed: @escaping DownloadComplete)
    {
        Alamofire.request(_pokemonURL).responseJSON { (response) in
            var success = true
            if let jsonData = response.result.value as? Dictionary<String, Any>
            {
                // parse the json here
                ...
            }
            else
            {
                success = false
            }
            completed(success)
        }
    }

// Controller class
override func viewDidLoad() {
        super.viewDidLoad()
        pokemon.downloadPokemonDetails(completed: { (success) in
            if success
            {
                self.updateUI()
            }
            else
            {
                print("FAILED: TO PARSE JSON DATA")
            }
        }) …
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch ios swift alamofire

2
推荐指数
1
解决办法
1606
查看次数