Objective c 如何将组件与网格对齐?

Objective c 如何将组件与网格对齐?,objective-c,grid,alignment,Objective C,Grid,Alignment,我正在开发一个应用程序,用户可以在视图上放置自己的控件。现在我正在研究细节,希望控件与某种网格对齐 如何绘制网格 如何确保控件自动与网格对齐(到最近的角?) 提前谢谢 有谁能帮忙吗?对于那些仍然对答案感兴趣的人: 我首先画了水平线和垂直线: -(空)绘图网格 { } for(int y=self.gridSize;y<self.templateEditView.frame.size.height;y+=self.gridSize){ UIView *hline = [[UIView

我正在开发一个应用程序,用户可以在视图上放置自己的控件。现在我正在研究细节,希望控件与某种网格对齐

  • 如何绘制网格
  • 如何确保控件自动与网格对齐(到最近的角?)
  • 提前谢谢


    有谁能帮忙吗?

    对于那些仍然对答案感兴趣的人:

    我首先画了水平线和垂直线:

    -(空)绘图网格 {

    }

    for(int y=self.gridSize;y<self.templateEditView.frame.size.height;y+=self.gridSize){
        UIView *hline = [[UIView alloc] init];
        [hline setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.1f]];
        hline.frame = CGRectMake(0, y, self.templateEditView.frame.size.width, 1);
        [self.templateEditView addSubview:hline];
    }
    
    for(int x=self.gridSize;x<self.templateEditView.frame.size.width;x+=self.gridSize){
        UIView *vline = [[UIView alloc] init];
        [vline setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.1f]];
        vline.frame = CGRectMake(x, 0, 1, self.templateEditView.frame.size.height);
        [self.templateEditView addSubview:vline];
    }
    
    int gridSize = self.gridSize;
    
    int oldX = (int)control.frame.origin.x;
    int newX = (oldX /gridSize)*gridSize;
    if(oldX%gridSize > gridSize/2){
        newX+=gridSize;
    }
    
    int oldY = (int)control.frame.origin.y;
    int newY = (oldY /gridSize)*gridSize;
    if(oldY%gridSize > gridSize/2){
        newY+=gridSize;
    }
    
    [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveLinear animations:^ {
        [control setFrame: CGRectMake(newX,newY,control.frame.size.width,control.frame.size.height)];
    } completion:nil];