我是一个客观的C newb和相关的编程新手一般,所以你的耐心是值得赞赏的。在基于视图的应用程序模板中,我将此代码从myNameViewController.m中拉出并尝试将其插入到自定义类中。一切都转好了,除了这个:[self.view addSubview:myImage];我收集这个现在正在调用myObject的addSubview方法,该方法不存在....将子视图插入当前视图的正确方法是什么?
#import "myObject.h"
@implementation myObject
-(void)drawImage{
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 70.0f, 70.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"test.png"]];
myImage.opaque = YES;
[self.view addSubview:myImage];
}
@end
答案 0 :(得分:0)
您复制的代码源自 UIViewController (这是定义 view 属性的地方)。 addSubview 是 UIView 对象上的消息。
所以你的 myObject 需要是 UIViewController 的子类,以便你可以访问它的子视图,或者 myObject 只是一个视图在它自己的( myObject 派生自 UIView ?),在这种情况下,您只需将 UIImageView 添加到的视图层次结构中myObject的:
[self addSubview:myImage];
<强>更新强>
您需要在UIView子类中实现 drawRect 消息并在context上绘制。如下所示:
@implementation ViewWhichDrawsItself
- (void)drawRect:(CGRect)rect
{
// get the drawing context
CGContextRef context = UIGraphicsGetCurrentContext ();
// draw on the context
...
}
答案 1 :(得分:0)
您的myObject
必须是UIViewController
的子类才能实现此功能,因为这会为其提供view
属性(与您复制的viewController
相同来自的代码。
在myObject.h
中,您的界面应为:
@interface myObject : UIViewController {
}
表示它是 subClasses ,或者成为UIViewController
的核心。它可以执行常规UIViewController
可以执行的操作,并将继承所有相同的属性(例如view
),但由于它只是它的子类,因此您可以添加特定的额外信息到你自己的对象。