Hot*_*day 1 cocoa-touch objective-c uiviewcontroller uiview ios
到目前为止,我的代码工作正常,但我必须创建一个类UIView.这有点不方便,因为我也需要与ViewController进行交互.
顺便说一句,我曾尝试[self setNeedsDisplay]在ViewDidLoad该的UIViewController子类的文件,但没有奏效.
这是代码,它在UIViewSubclass上工作但不会在一个上调用UIViewController:
- (void)drawRect:(CGRect)rect
{
UIColor *currentColor = [UIColor redColor];
CGContextRef context = UIGraphicsGetCurrentContext();
someNum = 1;
CGContextBeginPath(context);
CGContextMoveToPoint(context, 30, 40);
[self addDotImageX:30 andY:40];
CGContextSetLineWidth(context, 2);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextStrokePath(context);
}
Run Code Online (Sandbox Code Playgroud)
关于尝试什么的任何想法?顺便说一句,这是一个TabBar应用程序.我知道那些可以以某种方式阻止调用drawRect.
以编程方式创建的选项卡,而不是通过Nib.例如:
NSMutableArray *listOfViewControllers = [[NSMutableArray alloc] init];
UIViewController *vc;
vc = [[Education alloc] init];
vc.title = @"Education";
[listOfViewControllers addObject:vc];
vc.tabBarItem.image = [UIImage imageNamed:@"info.png"];
[vc release];
Run Code Online (Sandbox Code Playgroud)
我很感激任何想法.我已经浏览了这个网站上setNeedsDisplay没有打电话drawRect的答案,但没有找到我的具体案例的答案.
谢谢.
Nic*_*ver 10
你正在混合两个班级.UIViewController不是UIView,这意味着它不会从UIView继承.但好消息是它有一种观点,被宣称为财产:它的构成.drawRect方法仅在UIView类/子类中可用.
如果你想强制控制器的视图重绘,你可以打电话
[self.view setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)
在viewController中.
您可以使用loadView方法将自己的自定义视图设置为viewController的视图.它可能看起来像这样:
- (void)loadView
{
MySubclassOfUIView *rootView = [[MySubclassOfUIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// do more view configuration ...
self.view = rootView;
[rootView release];
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以将您的绘图代码分隔在MySubclassOFUIView.m文件中.
UIViewController类为iPhone应用程序提供基本的视图管理模型.基本视图控制器类支持相关视图的呈现,支持管理模态视图,并支持旋转视图以响应设备方向更改.
和UIView的目的:
UIView类在屏幕上定义了一个矩形区域,以及用于管理该区域内容的接口.在运行时,视图对象处理其区域中任何内容的呈现,并处理与该内容的任何交互.
看看可可核心竞争力/模型-视图-控制器苹果的官方文档中,它描述了MVC设计模式.
| 归档时间: |
|
| 查看次数: |
9029 次 |
| 最近记录: |