- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 drawAtPoint:point withAttributes:attrs
方法将一个字符串附加到 View ,但是该字符串在 View 内的任何地方都看不到,或者至少我看不到它(可能是颜色与 View 相同,白色)。
以下代码是我在 View Controller 的 viewDidLoad
中使用的代码:
NSMutableDictionary *stringAttributes = [[NSMutableDictionary alloc] init];
[stringAttributes setObject:[UIColor redColor]forKey: NSForegroundColorAttributeName];
NSString *someString = [NSString stringWithFormat:@"%@", @"S"];
[someString drawAtPoint:CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2) withAttributes: stringAttributes];
我做错了什么?
编辑:在遵循@rokjarc 的建议后,我创建了一个 View Controller ,其中包含一个将字符串添加到当前上下文的drawRect
方法:
#import <Foundation/Foundation.h>
@interface XYZSomeView : UIView
@end
#import "XYZSomeView.h"
#import "NSString+NSStringAdditions.h"
@implementation XYZSomeView
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
NSMutableDictionary *stringAttributes = [[NSMutableDictionary alloc] init];
[stringAttributes setObject:[UIColor redColor]forKey: NSForegroundColorAttributeName];
NSString *someString = [NSString stringWithFormat:@"%@", @"S"];
[someString drawAtPoint:CGPointMake(rect.origin.x, rect.origin.y) withAttributes: stringAttributes];
NSLog(@"%@", someString);
CGContextRestoreGState(context);
}
@end
在我的 Root View Controller 中,我初始化了 XYZSomeView
:
#import "XYZRootViewController.h"
#import "XYZSomeView.h"
@implementation XYZRootViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
XYZSomeView *someView = [[XYZSomeView alloc] init];
[self.view addSubview:someView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
NSLog(@"%@", @"XYZRootViewController reveived memory warning");
}
@end
问题是我的 drawRect
没有被调用,是因为我必须自己调用它吗?我认为这个方法应该在初始化时被调用,而我不必调用它。
最佳答案
您需要引用当前图形上下文才能使用此函数:docs .您在 viewDidLoad:
中没有此引用。通常这是在 drawRect:
中完成的。有多种方法可以在屏幕外生成内容时使用它 - 但这似乎不符合您的需求。
如果您想在 View Controller 的 viewDidLoad
中添加简单文本,请考虑向该 View Controller 的 View 添加具有透明背景的简单 UILabel
。
关于ios - drawAtPoint 不呈现 View 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742105/
其他人会从UIImage -drawAtPoint体验到非常慢的性能:有小费吗? 最佳答案 缓慢的图像绘制可能有多种原因。在这种情况下,CPU发生的是三次三次大小调整。解决方案:使用不需要调整大小,预
我正在尝试使用以下代码绘制图像: [img drawAtPoint:CGPointZero]; 但问题是,在具有视网膜显示屏的 iPhone 上,图像不会以视网膜比例绘制。看起来图像被放大然后绘制。我
我有在 CALayer 中绘制文本的代码: override func drawInContext(ctx: CGContext) { ... // text
我想在屏幕上的某个位置绘制“文本”而不使用 UILabel,所以我 [@"text" drawAtPoint:CGPointMake(100, 200) withFont:[UIFont
我想制作一些带有标签的 UIImage,如果未加载照片,它会显示。在应用程序中生成此图像更有用,因为它很容易本地化文本。我有代码: NSString *text = @"Photo not loade
我正在自定义绘制一些文本: point = CGPointMake(77, 5); [[message valueForKey:@"user_login"] drawAtPoint:point
我一直在尝试将 NSString 添加到我的应用程序中的 NSImage 中。由于某种原因,它似乎非常模糊和嘈杂。这是保存为 jpeg 的输出。 /image/QHVQF.jpg 我读到这可能是由于在
在我的应用程序中,我以编程方式构建一个 NSImage 对象,并将其设置为应用程序停靠图标。我想向图标添加一些文本,并一直在尝试使用 NSString drawAtPoint: withAttribu
我用它来组合 2 个 NSImage: newImage = [[NSImage alloc] initWithSize:NSMakeSize(size1.width,
嘿。我有一个非常简单的文本输出到缓冲系统,它将随机崩溃。 DAYS会很好,然后有时会在几分钟内崩溃几次。对于使用高级控件的其他人,调用栈几乎完全相同: http://discussions.apple
我有一个时钟指针的图像。我正在尝试创建此图像的旋转版本,以便我可以使用动画播放它(使用 UIImageView 的 animatedImages 方法)。 在下面的代码中,我看到如果我将 CGCont
我正面临 NSString 方法 drawAtPoint 和 kCGTextFillClip 的问题。我需要创建一个带有渐变而不是简单颜色的 UILabel,因此我将其子类化并覆盖了 drawRect
我正在尝试使用 drawAtPoint:point withAttributes:attrs 方法将一个字符串附加到 View ,但是该字符串在 View 内的任何地方都看不到,或者至少我看不到它(可
我目前致力于封装许多 [NSString drawAtPoint:withFont:] 函数调用到一个方法,这样我就可以通过一次调用绘制很多字符串,但是我怎么能告诉方法在哪里画这些弦? 如果我将 CG
我对核心图形有点陌生,我一直出错,当我合并它们时第二张图片没有显示: - (UIImage*)imageByCombiningImage:(UIImage*)gfirstImage withImage
在下图中,每行的第一个字符是在 subview 中绘制的 NSAttributed 字符串。该线的其余部分是在常规 NSTextView 中绘制的。 subview 与 NSTextView 中的行片
由于 CGContextShowTextAtPoint 在 iOS 7 中已弃用,我想将 CGContextShowTextAtPoint 更改为 drawAtPoint 但文本正在输出。 //Ad
我正在尝试将为 iOS 7 之前版本编写的示例代码合并到我的演示项目中。我得到一些与 drawAtPoint 和 sizeWithFont 相关的折旧方法。我已经阅读了一堆具有相同问题的 SO 条目,
我目前正在关注 Matt Neuburg 编写的 Programming iOS 7 中的代码。 我在我的自定义 View (ArrowsView) 中输入了以下代码。 #import "Arrows
所以我有一个巨大的 UIImage,可能是 10,000x10,000 像素(我知道它们显然不应该超过 1024x1024,但无论如何这不是主要问题)。在屏幕上移动它(使用 -drawAtPoint
我是一名优秀的程序员,十分优秀!