我有以下CALayer: CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = CGRectMake(8, 57, 296, 30); gradient.cornerRadius = 3.0f; gradient.colors = [NSArray arrayWithObjects:(id)[RGB(130, 0, 140) CGColor], (id)[RGB(108, 0, 120) CGColor], nil]; [self.layer insertSublayer:gradient atIndex:0]; 我想添加一个内部的阴影效果,但我不太清楚如何做到这一点。 我想我会被要求绘制drawRect,但是这将添加在其他UIView对象的顶层,因为它应该是一些button后面的酒吧,所以我不知道该怎么做? 我可以添加另一个图层,但是又不知道如何实现内部的阴影效果(如下所示: 帮助赞赏…
任何直接测量文字高度的方法? 我现在做的方法是使用Paint的measureText()来获取宽度,然后通过反复试验find一个值来获得一个近似的高度。 我也一直在搞FontMetrics ,但所有这些看起来像FontMetrics近似方法。 我正在尝试针对不同的分辨率进行缩放。 我可以做到这一点,但我最终得到了很多计算繁琐的代码,以确定相对大小。 我讨厌它! 一定有更好的方法。
如果我用open("image.jpg")打开图像,如果我有像素的坐标,如何获得像素的RGB值? 那我怎么能做到这一点呢? 从一个空白的graphics开始,写一个具有一定RGB值的像素? 如果我不必下载任何额外的库,情况会好得多。
我有一个位图,我想从这个位图裁剪一个圆形的区域。 圆圈外的所有像素都应该是透明的。 我怎样才能做到这一点?
我想要的是我的白色UILabel文本的一个像素的黑色边框。 我使用下面的代码对UILabel进行了子类化,这些代码是我从一些切线相关的在线示例中笨拙地拼凑而成的。 它的工作原理非常非常缓慢(除了在模拟器上),我也无法让它垂直居中文本(所以我暂时将最后一行的y值硬编码)。 哈啊! void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) { CGContextSetTextDrawingMode(gc, kCGTextInvisible); CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str)); CGPoint pt = CGContextGetTextPosition(gc); CGContextSetTextDrawingMode(gc, kCGTextFillStroke); CGContextShowTextAtPoint(gc, x – pt.x / 2, y, str, strlen(str)); } – (void)drawRect:(CGRect)rect{ CGContextRef theContext = UIGraphicsGetCurrentContext(); CGRect viewBounds = self.bounds; CGContextTranslateCTM(theContext, 0, viewBounds.size.height); CGContextScaleCTM(theContext, 1, -1); CGContextSelectFont […]
我如何将CGRect对象存储在NSMutableArray中,然后再检索它们?
在GraphViz的DOT语言中,我试图表示一个依赖关系图。 我需要能够有一个容器内的节点,并能够使节点和/或容器依赖于其他节点和/或容器。 我使用subgraph来表示我的容器。 节点链接工作得很好,但我不知道如何连接子图。 鉴于下面的程序,我需要能够用箭头连接cluster_1和cluster_2 ,但是我尝试过的任何事情都会创build新的节点,而不是连接集群: digraph G { graph [fontsize=10 fontname="Verdana"]; node [shape=record fontsize=10 fontname="Verdana"]; subgraph cluster_0 { node [style=filled]; "Item 1" "Item 2"; label = "Container A"; color=blue; } subgraph cluster_1 { node [style=filled]; "Item 3" "Item 4"; label = "Container B"; color=blue; } subgraph cluster_2 { node [style=filled]; "Item 5" "Item 6"; […]
有没有人知道任何将复制iOS7风格模糊视图的控件。 我假设可能会有某种UIView子类将复制的行为。 我正在谈论这些types的视图模糊背景非常厚,使他们从背景视图拉动效果。
我是OpenGL的新手,我有点不知所措的代码中的所有随机函数。 他们工作,我知道什么时候使用他们,但我不知道为什么我需要他们或他们实际上做什么。 我知道glLoadIdentity()用当前matrixreplace当前matrix,但是到底是什么呢? 如果每个程序都需要它,为什么默认情况下不是身份matrix,除非另有说明? 我不喜欢在我的代码中有function,除非我知道他们做了什么。 我应该注意到,我正在使用OpenGL专门用于丰富的2D客户端,所以如果这对于3D来说非常明显,那么请原谅我的无知。 还有一点困惑glMatrixMode(GL_PROJECTION) VS glMatrixMode(GL_MODELVIEW) 。
澄清这个问题的目的:我知道如何用两个子视图和使用drawRect创build复杂的视图。 我试图完全理解何时以及为什么要使用一个。 我也明白,提前优化是没有意义的,而在做任何分析之前,要做一些更困难的事情。 考虑到我对这两种方法都很满意,现在真的想要更深入的了解。 很多我的困惑来自于学习如何使桌面视图滚动性能真正平滑和快速。 当然这个方法的原始来源是来自iPhone 后面的作者 (以前tweetie)的作者。 基本上说,为了让桌面滚动顺滑,秘诀是不使用子视图,而是在一个自定义的uiview中做所有的绘图。 从本质上讲,使用大量的子视图似乎减慢了渲染速度,因为它们有很多开销,并且不断地在其父视图上重新合成。 公平的说,这是在3GS是新品牌的时候写的,iDevices从那以后变得更快了。 这种方法在互联网和其他地方也经常被 build议用于高性能表格。 事实上,这是苹果公司的示例代码中的一个build议的方法,已经在几个WWDCvideo( 适用于iOS开发人员的实用绘图 )和许多iOS 编程书籍中被提出 。 甚至有令人敬畏的工具来devisegraphics,并为它们生成Core Graphics代码。 所以一开始我就会相信“Core Graphics存在的原因是很快的,这很快! 但是,只要我认为我的想法是“尽可能地支持核心graphics”,我开始发现drawRect经常对应用程序的反应不佳负有责任,这是非常昂贵的内存明智的做法,并且真正对CPU征税。 基本上,我应该“ 避免重写drawRect ”(WWDC 2012 iOS应用程序性能:graphics和animation ) 所以我想,就像一切,这是复杂的。 也许你可以帮助自己和其他人了解什么时候使用drawRect? 我看到一些明显的情况下使用Core Graphics: 你有dynamic数据(苹果股票图例) 你有一个灵活的UI元素,不能用一个简单的可resize的图像执行 您正在创build一个dynamicgraphics,一旦呈现在多个地方使用 我看到情况,以避免核心graphics: 您的视图的属性需要单独设置animation 你有一个相对较小的视图层次,所以使用CG所感知的额外努力是不值得的 你想要更新视图的片断而不用重绘整个事物 父视图大小更改时,需要更新子视图的布局 所以赋予你的知识。 在什么情况下你达到drawRect / Core Graphics(这也可以通过子视图来完成)? 什么因素导致你做出这个决定? 如何/为什么在一个自定义视图中绘制推荐用于平滑表格单元格滚动,但是苹果build议通常针对性能原因使用drawRect? 简单的背景图像(什么时候用CG创build它们,使用可resize的PNG图像)? 对这个主题的深入理解可能不需要做出有价值的应用,但是我不喜欢在不能解释原因的情况下select技术。 我的大脑对我生气。 问题更新 感谢大家的信息。 一些澄清的问题在这里: 如果你正在绘制核心graphics的东西,但可以用UIImageViews和预渲染的PNG完成同样的事情,你应该总是走这条路线吗? […]