2014-05-02 50 views
0

的Xcode 5如何顯示的UIView的定製子類中的ViewController

我試圖創建一個自定義裁剪矩形即可裁剪圖片。 FOr,我明白我需要重寫擴展UIView類中的drawRect()方法。但後來我不知道如何在ViewController中使用該類來顯示它。

如果我走錯了方向,請糾正。我對此有點新。

MDCustomCropRect.h

#import <UIKit/UIKit.h> 

@interface MDCustomCropRect : UIView 

@end 

MDCustomCropRect.m

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    CGRect rectangle = CGRectMake(0, 100, 320, 100); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.0); //this is the transparent color 
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 0.5); 
    CGContextFillRect(context, rectangle); 
    CGContextStrokeRect(context, rectangle); //this will draw the border 
} 

回答

1

只需添加您的看法是你的UIViewController的視圖的子視圖。

在你的viewController代碼,通常在viewDidLoad方法:

// create your view 
    MDCustomCropRect *myView = [[MDCustomCropRect alloc] init]; 
    [self.view addSubView:myView] 
    // you can manually set your view frame - in this case use initWithFrame: instead of init 
    // OR use layout constraints : define and add constraints AFTER your inserted your view as a subview 

編輯

在你的情況,因爲你只繪製一個矩形 - 這正是UIView是 - 你可以代替如下:

UIView *myRectangleView = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 320, 100)]; 
    myRectangleView.backgroundColor = [UIColor clearColor]; 
    myRectangleView.layer.borderWidth = 1; 
    myRectangleView.layer.borderColor = [UIColor colorWithWhite:0 alpha:0.5].CGColor; 
    [self.view addSubView:myRectangleView]; 

不需要特定的drawRect你的情況

+0

但我已經有一個UIImageView有它由我通過相機拍攝的圖像。我想把矩形放在它上面,而不是替換它。 – Abhinav

+0

和有什麼問題?一個視圖可以有多個子視圖:) – Vinzzz

+0

現在的問題是矩形不在初始屏幕上。所以我認爲這是因爲我已經有了一個UIImageView。 BTW是我寫在drawRect中的代碼,足以顯示將它作爲子視圖添加到你所提到的矩形? – Abhinav

1

在你的viewController

MDCustomCropRect *myView = [[MDCustomCropRect alloc] init]; 
myView.frame = CGRectMake(10,10,200,100); 
myView.backgroundColor = [UIColor greenColor]; 
[self.view addSubView:myView] 
+0

嗨!你的代碼工作完美。但是我的代碼有什麼問題?因爲我需要在角落添加圓圈,處理觸摸事件和很多事情。所以我寧願只在單獨的課堂上做所有事情。 – Abhinav

相關問題