我是 Cocoa 开发的新手,我怀疑这是一个菜鸟问题。
我正在使用定制的 UIView 创建一个简单的背景画布。我希望我能够创建这个画布,使其从主视图略微缩进,以便我可以在以后添加工具栏。但是,当我使用 initWithFrame (以及任何其他 init )时,画布总是被创建为全屏的大小,而不是略小于全屏。即使我完全覆盖了 CGRect 的值,它也没有什么区别。我设置了一个 touchesBegan 事件并将背景颜色设置为绿色以便能够确定成功,但我得到的只是一个完全绿色的屏幕和一个在任何地方都有效的触摸事件。
请帮助 - 这让我发疯,我在网络上的任何地方都找不到答案。
相关代码如下(目前整个应用程序中实际上并没有比这更多的代码):
应用委托
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.objMainViewController = [[MainViewController alloc] init];
self.window.rootViewController = self.objMainViewController;
[self.window makeKeyAndVisible];
return YES;
}
主视图控制器.h
#import <UIKit/UIKit.h>
#import "viewCanvas.h"
@interface MainViewController : UIViewController
@property (strong, nonatomic) viewCanvas *objViewCanvas;
-(id)init;
@end
主视图控制器.m
#import "MainViewController.h"
#import "viewCanvas.h"
@implementation MainViewController
@synthesize objViewCanvas;
-(id)init
{
if (self = [super init]) {
CGRect frame = CGRectMake(100, 100, 100, 100);
objViewCanvas = [[viewCanvas alloc] initWithFrame:frame];
}
return self;
}
- (void)loadView {
self.view = objViewCanvas;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
视图画布.h
#import <UIKit/UIKit.h>
#import "viewCanvas.h"
@interface viewCanvas : UIView {
}
//Init
- (id) initWithFrame:(CGRect)frame;
//Events
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
viewCanvas.m
#import "viewCanvas.h"
@implementation viewCanvas
//Standard inits
- (id) initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
[self setBackgroundColor:[UIColor greenColor]];
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Touches Began Canvas" message:@"Canvas Touches Began" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: nil];
[alert show];
}
@end