iOS:DrawRect不会移动我的视图

时间:2014-04-04 06:50:35

标签: ios objective-c uiviewanimation drawrect

我是iOS上的新开发者,我正在努力使用DrawRect方法:第一次调用它时,它实际上在我想要的地方绘制了我想要的内容,但是所有下一次调用DrawRect都无法移动我的视图(虽然他们确实调整了它) 因此,我制作了一个极简主义的测试应用程序来重现我的问题,但仍无法找出原因 这个应用程序只是在左上角绘制一个蓝色矩形,每次你点击它,它应该是:

  • 切换宽度和高度(此 工作)
  • 将矩形向右移动10个点(此工作)

当然我检查了DrawRect实际上被调用了,它的界限确实改变了我想要的,但是,我的观点仍然不想移动。

============================================== <登记/> 这是我的ViewController(RVTViewController.m)
==============================================

@implementation RVTViewController
(void)viewDidLoad`
{
    [super viewDidLoad];
    if (!self.myView)
    {
        CGRect viewBounds = CGRectMake(0,0,100,150);
        self.myView = [[RVTView alloc] initWithFrame:viewBounds];
        [self.view addSubview:self.myView];        
        UITapGestureRecognizer* gestRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
        [self.myView addGestureRecognizer:gestRec];
    }
}

-(void) tap:(UITapGestureRecognizer*) gesture
{
    CGRect newViewBounds = CGRectMake(self.myView.bounds.origin.x + 10,
                                      self.myView.bounds.origin.y,
                                      self.myView.bounds.size.height,
                                      self.myView.bounds.size.width);
    self.myView.bounds = newViewBounds;
    [self.myView setNeedsLayout]; 
    [self.myView setNeedsDisplay];
}
@end

=====================================
这是我的自定义视图(RVTView.m)
=====================================

@implementation RVTView
- (void)drawRect:(CGRect)rect
{
    CGRect newBounds = self.bounds;
    UIBezierPath* newRect = [UIBezierPath bezierPathWithRect:newBounds];
    [[UIColor blueColor] setFill];
    UIRectFill(self.bounds);
    [newRect stroke];
}
@end

有人可以告诉我我的错误吗?

1 个答案:

答案 0 :(得分:-1)

使用[self.myView setFrame:newViewBounds];代替self.myView.bounds = newViewBounds;解决了问题。