iOS:在UIView的中心画一个圆圈的UIImage

时间:2015-03-16 09:51:59

标签: ios

我有一个半径为50的圆形图像,现在我想将圆形中心与我的视图中心相同:

- (void)drawRect:(CGRect)rect {
    UIImage *arrow = [UIImage imageWithPDFNamed:@"circle" atSize:CGSizeMake(50, 50)];
    [arrow drawAtPoint:self.center];
}

但是drawAtPoint并没有在中心绘制。 我想知道如何定位图像的中心?所以我可以画它?

5 个答案:

答案 0 :(得分:3)

来自Apple的UIImage文档

  

此方法在当前图形上下文中绘制整个图像,   尊重图像的方向设置。在默认坐标中   系统,图像位于指定的右侧和右侧   点。此方法考虑应用于当前的任何变换   但是,图形上下文。

因此,以图像宽度和高度的一半来偏移中心,以在图像的中心绘制图像的中心。

- (void)drawRect:(CGRect)rect {
    CGSize imageSize = CGSizeMake(50,50);
    UIImage *arrow = [UIImage imageWithPDFNamed:@"circle" atSize:imageSize];
    [arrow drawAtPoint:CGPointMake(self.center.x-imageSize.width/2., self.center.y-imageSize.height/2.)];
}

答案 1 :(得分:1)

您不需要绘制它,只需将它的中心分配到您的视图中心

arrowsuperview.center = self.center

答案 2 :(得分:0)

试试这个。这是在视图中找到子视图中心的方法

childView.center = CGPointMake(parentView.bounds.size.width / 2, parentView.bounds.size.height / 2);

答案 3 :(得分:0)

试试这个..

    UIImageView *circleImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
    circleImageView.image = yourCircleImage;
    circleImageView.center = self.view.center;
    [circleImageView setContentMode:UIViewContentModeCenter];
    [self.view addSubview:circleImageView];

答案 4 :(得分:0)

使用以下代码计算UIView的中心,并使用drawAtPoint函数绘制图像。

- (void)drawRect:(CGRect)rect 
{
   CGPoint ptCenter = {rect.size.width / 2.0f, rect.size.height / 2.0f};
   [arrow drawAtPoint:ptCenter];
}

另一种简单方法:

您还可以使用storyboard / xib和自动布局来实现结果。而不是在drawRect中绘制图像,而是使用UIImageView来保存图像并使用Autolayout约束定位图像视图。