我有一个半径为50的圆形图像,现在我想将圆形中心与我的视图中心相同:
- (void)drawRect:(CGRect)rect {
UIImage *arrow = [UIImage imageWithPDFNamed:@"circle" atSize:CGSizeMake(50, 50)];
[arrow drawAtPoint:self.center];
}
但是drawAtPoint并没有在中心绘制。 我想知道如何定位图像的中心?所以我可以画它?
答案 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约束定位图像视图。