【问题标题】:ViewController and drawRectViewController 和 drawRect
【发布时间】:2013-05-07 14:18:22
【问题描述】:

我有一个 UIViewController,我希望它调用 drawRect,这样我就可以在视图上绘图,但没有任何反应。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
...code...
}

@end

和实现

#import "ViewController.h"


@implementation ViewController

-(void) drawRect:(CGRect) rect {
draw a pony
}

- (void)viewDidLoad {
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

但是当应用程序运行时,视图上没有绘制任何小马,我做错了什么?

【问题讨论】:

    标签: iphone cocoa uiviewcontroller drawrect


    【解决方案1】:

    UIViewController 没有覆盖消息 drawRect。 您应该创建从UIView 派生的自定义类并在那里覆盖消息drawRect

    您可以为UIViewController 覆盖消息(UIView *)view 并返回自己的自定义UIView 或在Interface Builder 中将类从UIView 更改为自己的类。

    【讨论】:

      【解决方案2】:

      UIView 上调用setNeedsDisplay,而不是ViewController,是触发和重新触发drawRect 代码的一种方式,您可以在需要更新整个视图时有条件地发送此消息。

      您可以使用

      在自定义 UIView 中调用它
      [self.setNeedsDisplay]
      

      或从视图控制器通过将UIView 设置为控制器的属性并调用

      [self.myView setNeedsDisplay]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多