我正在使用 UITableView 和自定义 UITableViewCell。最初,当我从 nib 文件加载单元格的 View 时,它的性能很差。
我找到了 iPhone 版 Twitter 作者的一篇博文,其中讨论了为单元格绘制我们自己的图形以提高性能。这听起来很简单,对吧?
所以,我在这里开始这样做:
- (void)drawRect:(CGRect)rect{
// Drawing code
#define LEFT_COLUMN_WIDTH 48
#define MIDDLE_COLUMN_OFFSET 52
#define MIDDLE_COLUMN_WIDTH 180
#define MAIN_FONT_SIZE 12
#define MIN_MAIN_FONT_SIZE 10
#define SECONDARY_FONT_SIZE 10
#define MIN_SECONDARY_FONT_SIZE 10
#define RIGHT_COLUMN_SIZE 70
#define PADDING 4
UIColor * secondaryTextColor = nil;
UIFont * secondaryFont = [UIFont systemFontOfSize:SECONDARY_FONT_SIZE];
//mainTextColor = [UIColor blackColor];
secondaryTextColor = [UIColor blackColor];
self.backgroundColor = [UIColor whiteColor];
CGPoint point;
CGSize size;
//[mainTextColor set];
NSString * textToDisplay = @"Test";
CGPoint rightColumnStart = CGPointMake(self.frame.size.width - PADDING - RIGHT_COLUMN_SIZE, 0);
point = CGPointMake(rightColumnStart.x + (RIGHT_COLUMN_SIZE/2 - size.width/2), 40);
[textToDisplay drawAtPoint:point forWidth:RIGHT_COLUMN_SIZE withFont:secondaryFont minFontSize:MIN_SECONDARY_FONT_SIZE actualFontSize:NULL lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
// background color
/*CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextAddRect(context, CGRectMake(rightColumnStart.x, 0, RIGHT_COLUMN_SIZE, self.frame.size.height));
CGContextFillPath(context);
*/
}
如您所见,发生了很多事情(还有相当多的硬编码坐标,暂时忽略魔数(Magic Number))。
因此,在代码块中,如果您查找注释“背景颜色”,可以看到我正在绘制一个彩色矩形。我还在要显示在矩形顶部的同一坐标空间内绘制文本“test”。
因此,如果我在没有启用“背景颜色”的情况下运行应用程序,“测试”文本会毫无问题地显示出来。它是黑色的,10 号,看起来很棒,位置正确等等。
当我绘制矩形时,“测试”文本没有显示。它很可能在彩色矩形后面呈现,或者混合设置不正确。
如何避免此问题并将两者混合在一起,以便黑色文本显示在彩色矩形的顶部?我不确定我应该通过 Google 询问什么问题,所以如果这很简单,我深表歉意。
谢谢!!!!
最佳答案
先画背景,再画上面的文字。
关于iphone - Core Graphics 绘制形状和文本混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812189/
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
所以我只是对此感到好奇:DataMapper为其模型使用混合classPostincludeDataMapper::Resource虽然active-record使用继承classPost有谁知道为什么DataMapper选择这样做(或者为什么AR选择不这样做)? 最佳答案 它允许您从另一个不是DM类的类继承。它还允许动态地将DM功能添加到类中。这是我正在处理的模块中的类方法:defdatamapper_classklass=self.dupklass.send(:include,DataMapper::Resource)klass
如何用HAML编写这个ERB:#OR我可以:=some_ruby_code+":"#and=some_ruby_code%br但我不想在这里连接,我想将它写成内联:(=some_ruby_code):#and(=some_ruby_code)%br 最佳答案 =some_ruby_code+":"-#and=some_ruby_code+""编辑1:我不确定您在寻找什么。你想要其中之一吗?==#{some_ruby_code}:-#and==#{some_ruby_code}或==#{some_ruby_code}:-#and=so
我在运行Ubuntu10.04LTS的远程VPS机器上以生产模式运行RubyonRails3.0.9(在开发模式下,我在MACOSSnow上使用RoRLeopard),我想知道如何管理以下场景。我使用Apache2和PhusionPassenger并且我将虚拟主机设置为如下所示:ServerNameproject_name.comDocumentRoot/srv/www/project_name.com/publicAllowOverrideallOptions-MultiViews此外,我使用Paperclipgem,由于网上很多人在生产模式下使用它,我在处理(图像)文件时遇到以下错
我编写了一个非常简单的Sassmixin,用于将像素值转换为rem值(请参阅JonathanSnook的articleonthebenefitsofusingrems)。这是代码://MixinCode$base_font_size:10;//10px@mixinrem($key,$px){#{$key}:#{$px}px;#{$key}:#{$px/$base_font_size}rem;}//Includesyntaxp{@includerem(font-size,14);}//RenderedCSSp{font-size:14px;font-size:1.4rem;}这个mixi
我想AND或OR数组中的所有元素,但要有一些控制,如散列元素选择所示。这是我希望实现的行为:a=[{:a=>true},{:a=>false}]a.and_map{|hash_element|hash_element[:a]}#=>falsea.or_map{|hash_element|hash_element[:a]}#=>true在Ruby中是否有一种巧妙、干净的方法来做到这一点? 最佳答案 您可以为此使用all?和any?:a=[{:a=>true},{:a=>false}]a.any?{|hash_element|has
我正在寻找一种简单的方法来绘制大约10个点和矩形,以便能够查看我的算法哪里出了问题。我查看了gnuplot,但似乎绘制矩形特别糟糕。 最佳答案 SVG(MDNTutorial)是一种非常简单的基于文本(XML)的格式,您可以使用Ruby轻松生成它,而无需任何SVG库,并可以在任何现代Web浏览器中查看。这是一个示例:通过字符串插值的SVG点points=(0..5).map{[rand(100)-50,rand(100)-50]}puts#{points.map{|x,y|""}.join("\n")}ENDSVG输出:http:/
我正在尝试使用prawnpdf在ruby中生成一个简单的表格。我需要单元格中的一些文本是粗体,而一些不是粗体。例如:现在按照一些示例,我使用以下代码进行了基本的表格渲染:pdf.table([["1.Rowexampletext","433"],["2.Rowexampletext","2343"],["3.Rowexampletext","342"],["4.Rowexampletext","36"]],:width=>500,:cell_style=>{:font_style=>:bold})但我完全看不出有什么办法可以用不同的格式将更多文本插入到第一个单元格中。(在这种情况下