- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 EAGLView,我希望将其转换为 UIImage。我可以使用此处发布的解决方案来做到这一点:
How to get UIImage from EAGLView?
但是,如果在创建 EAGLView 和 UIImage 之间经过了一小段时间,我只能完成此操作。
这段代码创建了一个 EAGLView,然后又创建了一个 UIImageView,但它不起作用:
EAGLView *EAGLphoto = [[EAGLView alloc] initWithImage:photo.workAreaImage];
[theWorkArea.photoArea1 addSubview:EAGLphoto];
//I put a glfinish() here but it didn't help
UIImageView *photoView = [[UIImageView alloc] initWithImage:[self glToUIImage]];
//glToUIImage is taken from the link above
[theWorkArea.photoArea2 addSubview:photoView];
我假设 UIImageView 尝试在 EAGLView 创建完成之前创建。我试图在两者之间放置一个 glfinish() 但它什么也没做。当我运行代码时,EAGLView 显示正常,但 UIImageView 显示为黑色。
但是,上述代码的修改版本有效:
EAGLView *EAGLphoto = [[EAGLView alloc] initWithImage:photo.workAreaImage];
[theWorkArea.photoArea1 addSubview:EAGLphoto];
[self performSelector:@selector(getUIImage) withObject:nil afterDelay:0.1];
- (void)getUIImage {
UIImageView *photoView = [[UIImageView alloc] initWithImage:[self glToUIImage]];
//glToUIImage is taken from the link above
[theWorkArea.photoArea2 addSubview:photoView];
}
我是否错误地使用了 glfinish()?有比我的 hack 更好的方法吗?
1 Câu trả lời
通常,当您对 UIKit 对象进行可见更改而不是立即更新时,它们只是标记自己以在将来进行这些更改,然后在您下次放弃主线程时(通过返回到运行循环)。这不是实现中的错误或失败,实际上通常是您隐含的期望,这是您可以编写如下代码的原因:
view.frame = someNewFrame;
view.someOtherProperty = someOtherValue;
不用担心 View 会在采用其他更改之前明显地采用新框架。通常,您希望对 View 所做的事情看起来是原子的。
有时您会遇到这样的情况,就像您在这里遇到的那样,您已经请求的更改尚未生效的事实会暴露出来。 frame
Và someOtherProperty
将在上面的示例中返回它们的新值,因此您不必关心更改是否立即生效,但基于您对 performSelector:withObject:afterDelay:
您可能偶然发现了一种情况,即更改不会假装立即发生。
EAGLXem
很难诊断,因为它并不是真正的 UIKit 功能。它所基于的 CAEAGLLayer
是,但 EAGLXem
只是 Apple 在各种示例项目中为基于 CAEAGLLayer
构建的自定义 UIView 子类采用的名称.他们在他们的示例中对 EAGLXem
的接口(interface)或实现并不一致,但我猜测它可能正在创建 OpenGL 帧缓冲区对象(即 OpenGL 使用的对象)存储与像素相关的数字,允许 glReadPixels
工作)只有在被要求对自己进行布局时才会进行布局,直到 UIKit 要求它这样做时它才会自行布局。直到你退出运行循环。
可以通过检查您拥有的 EAGLXem
的代码来确认该诊断。如果由于 layoutSubviews
,drawRect
或其他一些不是由相关的 khởi tạo
直接调用然后证明这一点。
假设诊断是正确的,您可以调整 EAGLXem
,但我认为最好的解决方案可能就是坚持使用 performSelector:withObject:afterDelay:0
。这不是竞争条件,因此该解决方案一点也不古怪或不可靠,它只是一种稍微迂回的说法“让 UIKit catch 所有这些指令,因为我知道这会让 EAGLView进入有意义的状态,然后继续我的事情”。
关于iphone - EAGLView 到 UIImage 的时序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047639/
我想选择一个类的所有元素。然后将该类更改为另一个类。 0.5 秒后,我想将元素恢复到原来的类。我必须连续这样做 8 次。即使我的代码实现了(以某种方式),我也看不到按钮的颜色变化。谁能帮我 ?我猜这是
我目前正在尝试用 C++ 编写一个 NES 模拟器,作为一个夏季编程项目,为下一学年的秋季学期做准备(我已经有一段时间没有编码了)。我已经编写了一个 Chip8 模拟器,所以我认为下一步是尝试编写一个
我有 2 个函数依次调用,x 和 y 是全局变量。 function setVariables() { x = 2; y = 10; }; function useVaria
我正在尝试以重复的方式播放 1000 毫秒的 wav 文件。因此,播放 1000 毫秒,然后播放 1000 毫秒的静音,然后再次播放 1000 毫秒的音频,... 但是当我在此过程中打印计时时,我注意
我正在为一个特殊的相机编写一个内核模块,通过 V4L2 处理帧到用户空间代码的传输。然后我在应用程序中做很多用户空间的事情。 时间在这里非常关键,所以我一直在做大量的性能分析和普通的旧 std::ch
据我了解,awakeFromNib 始终会在 viewDidLoad 之前调用。 所以我有一个 UITableViewController 的子类,它是从 xib 文件中取消存档的。 我在里面定义了这
我的powershell脚本运行缓慢,有什么办法可以分析powershell脚本吗? 最佳答案 在这里发布您的脚本真的有助于给出准确的答案。 您可以使用 Measure-Command 来查看脚本中每
我的CQRS / ES设计中有时间问题。为了便于讨论,让我们基于Microsoft的 有关此主题的示例, session 管理(https://msdn.microsoft.com/en-us/lib
我正在使用 RX 进行一些(非常基本的)事件订阅:- public void StartListening(IObservable observable) { subscription = ob
我会试着问我的问题,这样它就不会以一个简单的争论话题结束。 我最近进入了一个用 C# 编码的应用程序,我正在发现异常机制。我和他们有过一些不好的经历,比如以下 // _sValue is a stri
我正在阅读 Cortex M4 TRM 以了解指令执行周期。但是,那里有一些令人困惑的描述 在 Table of Processor Instuctions , STR需要 2 个周期 . 稍后在 L
我需要在 GPU 端处理一组绘图调用所需的时间跨度。 OpenGL 3.2+ 具有“GL_ARB_timer_query”扩展名。不幸的是,MacOSX 仍然不支持该扩展。 你如何能够在 gpu 端测
我正在 try catch 屏幕而不包括我的应用程序窗口。为此,我首先调用 setVisible(false),然后调用 createScreenCapture 方法,最后调用 setVisible(
我们试图实现的功能的简短描述:我们在左边有一个源对象列表,一个人可以将新项目从列表拖到右边的列表中,项目因此被添加到列表中在右侧;他们还可以从右侧的列表中删除项目。右侧的列表在更改时会被保存。 (我认
Tôi là một lập trình viên xuất sắc, rất giỏi!