请在ViewController中显示UIView的自定义子类

时间:2014-05-02 09:19:18

标签: ios objective-c uiview

Xcode 5

我正在尝试创建自定义裁剪矩形来裁剪图像。我明白我需要在扩展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
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在你的viewController中

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