initWithFrame is filling the screen instead of creating a frame of the size I want
===

I'm new to Cocoa development and suspect that this is a noob issue.

I'm creating a simple background canvas with a bespoke UIView. I was expecting that I would be able to create this canvas to be slightly indented down from the main view so that I could add a toolbar at a later date. However, when I use initWithFrame (and any other init for that matter), the canvas is always created to be the size of the full screen rather than slightly smaller than the full screen. Even if I completely override the values for CGRect it doesn't make a difference. I've set a touchesBegan event and set the background colour to green to be able to determine success but all I get are a completely green screen and a touch event that works everywhere. 

Please help - this is driving me mad and I can't find the answer anywhere on the web.

The relevant code is as follows (there actually isn't much more code than this in the whole app so far):

AppDelegate
     
    - (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;
    
    }

MainViewController.h

    #import <UIKit/UIKit.h>
    #import "viewCanvas.h"

    @interface MainViewController : UIViewController

    @property (strong, nonatomic) viewCanvas *objViewCanvas;

    -(id)init;

    @end

MainViewController.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];
   
    }

viewCanvas.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
