小编Mar*_*ark的帖子

UIPopoverController backgroundColor在显示时导致flash

我在我的应用程序中使用新的(在iOS 7中)UIPopoverController.backgroundColor设置来根据需要更改我的弹出窗口的颜色,但我发现使用此设置会在我打开我的时候导致颜色更改的"闪烁"弹出窗口 - 在大约半秒钟内从默认的半透明白色开始,逐渐消失到我选择的颜色.这是不希望的; 它应该只是我打开它时设置的颜色.

文件说明:

使用此属性可自定义弹出窗口的背景颜色.在弹出窗口可见时更改此属性的值会触发动画切换到新颜色.此属性的默认值为nil,对应于默认背景颜色.

但是,即使我在我的应用程序打开时设置它并且不再设置它,每次打开任何弹出窗口时它仍会闪烁.

我愿意使用UIPopoverBackgroundView,但我不确定它是否允许我即时更改背景颜色,因为它似乎是一个静态解决方案,只需更改应用程序中所有弹出窗口的样式.在此先感谢您的任何建议.

编辑(代码):

当我的主视图控制器被加载并准备其余的UI(这是许多popover inits之一):

fileOptionsController = [[FileOptionsViewController alloc] initWithNibName:@"FileOptionsViewController" bundle:nil];
fileOptionsController.delegate = self;

self.fileOptionsPopoverController = [[UIPopoverController alloc] initWithContentViewController:fileOptionsController];
[popoverControllers addObject:self.fileOptionsPopoverController];
Run Code Online (Sandbox Code Playgroud)

在我的popovers初始化之后,我正在运行它(仍然在主init代码中),目的是在设置backgroundColor和交互之间进行长时间延迟测试(注意:更改alpha没有任何效果,当设置为1时仍然会发生):

for (UIPopoverController *po in popoverControllers) {
    [po setBackgroundColor:[UIColor colorWithWhite:0.3f alpha:0.90f]];
}
Run Code Online (Sandbox Code Playgroud)

然后,当用户点击按钮以显示弹出框时,会调用此方法:

- (void)showPopover:(UIPopoverController *)popover from:(UIButton *)btn {
    [popover presentPopoverFromRect:CGRectMake(btn.frame.origin.x + 5.0f, btn.frame.origin.y - 1.0f, btn.frame.size.width, btn.frame.size.height) inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

挺直的.这些是访问此弹出窗口或任何弹出窗口的唯一相关位置,除非在已经显示的情况下将其解除.

uipopovercontroller uipopoverbackgroundview ios7

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

使用具有许多唯一原语的实例化绘图时,CPU与内存之间的权衡取舍

我在iOS上使用OpenGL ES 2渲染(相对)巨大的2D网格,其中正方形("像素")是脱节的 - 间隔而不是棋盘图案 - 并且概述了,并且我正在尝试最糟糕的时间找出一种有效的绘制方法,使得该正方形的每个正方形和轮廓可以分配不同的颜色,因为这是绘图应用程序.网格必须能够表示高达1024x1024"像素".

最初,我尝试了将所有顶点数据放在一个大型缓冲区中的方法,并且glDrawArrays每帧只需一次调用就可以渲染它,但正如您所料,内存使用情况不合理,只有轮廓(用GL_LINES制作) ) - 没有填充.进一步的研究让我了解了实例绘图,我现在正在做的glDrawArraysInstancedEXT,但是,当然,1024*1024实例绘制调用正在杀死CPU/FPS.我猜这个问题的解决方案介于两种方法之间 - 使用简并顶点绘制一个更大的"分组"GL_TRIANGLE_STRIPs原语来分隔生成的方块......但是我不认为我可以给每个方格它自己的颜色.不用说,我还在学习; 人们通常如何绘制大量简单,相同但色彩鲜艳的多边形?

相关代码......

static const int numColumns = 1024;
static const int numRows = 1024;
static const GLfloat outlineVertices[] = {
    0.1f, -0.1f,
    0.9f, -0.1f,
    0.1f, -0.9f,
    0.9f, -0.9f
};
static const GLfloat innerVertices[] = {
    0.2f, -0.2f,
    0.8f, -0.2f,
    0.2f, -0.8f,
    0.8f, -0.8f
};

- (void)setupGL
{
    [EAGLContext setCurrentContext:self.context];

    [self loadShaders];

    glDisable(GL_DEPTH_TEST);

    glGenVertexArraysOES(1, &_vertexArray);
    glBindVertexArrayOES(_vertexArray);

    glGenBuffers(1, &_vertexBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(outlineVertices), outlineVertices, GL_STATIC_DRAW); …
Run Code Online (Sandbox Code Playgroud)

opengl-es ios opengl-es-2.0

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