2011-09-05 5 views
2

내 응용 프로그램에서 격자 선 접근법을 만들고 사용자가 격자보기를 켜거나 끌 수 있도록하고 싶습니다. 그것은 어떤 종류의 터치 감지 또는 그것에 연관된 논리를 가질 필요가 없습니다. 사용자가보고 켜고 끌 수있는 격자 선. 이에 대한 분명한 해결책은 내보기에 그리드 이미지를 추가하고 필요할 때마다 이미지 뷰를 사용하여 표시하는 것입니다. 하지만 그건 내가 할 수없는 선택입니다. 나는 그것을 프로그래밍 방식으로해야만한다. 시간 내 줘서 고마워. 내가 구현하려고하는 것의 image. 어떤 아이디어? 코어 그래픽 또는 많은 uiviews?격자 선 만들기 및 사용자가 격자 선보기 켜기/끄기 허용

답변

1

:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sample.png"]]; 
1

UIView를 서브 클래스 화하고 여기에 별도의 2 개의 루프를 만듭니다. 하나는 수직선 용이고 다른 하나는 수평선 용입니다. 수직선 루프에서 UIView의 1px 너비와 768px 높이를 만듭니다. 수평으로 1px 높이 및 1024px 너비로 만듭니다.

숨기고 표시하려면 서브 클래 싱 된보기의 숨김 속성을 YES 또는 NO로 전환하면됩니다.

표준 UIView를 사용하여 서브 클래 싱없이 가능할 수 있습니다. 이를 사용하여 종료

+0

답장을 보내 주셔서 감사합니다. 예, 쉬운 방법입니다. 업데이트를보세요. 이를 위해 다른 테두리 너비로 적어도 40 uiviews를 만들고이를 배치하는 논리를 구현해야합니까? – Viraj

+0

점선은 아마도 이미지를 사용 하겠지만 네, 그렇게해야 할 것 같습니다. UIView는 매우 단순하므로이 솔루션에는 아무런 문제가 없어야합니다. – margusholland

+0

그래, 문제는 내가 이미지를 사용할 수 없다는 것이다. 대체 솔루션이 필요합니다. – Viraj

0

내가

class GridView: UIView { 

    var numberOfColumns: Int = 2 
    var numberOfRows: Int = 2 
    var lineWidth: CGFloat = 1.0 
    var lineColor: UIColor = UIColor.white 

    override func draw(_ rect: CGRect) { 
     if let context = UIGraphicsGetCurrentContext() { 

      context.setLineWidth(lineWidth) 
      context.setStrokeColor(UIColor.white.cgColor) 

      let columnWidth = Int(rect.width)/(numberOfColumns + 1) 
      for i in 1...numberOfColumns { 
       var startPoint = CGPoint.zero 
       var endPoint = CGPoint.zero 
       startPoint.x = CGFloat(columnWidth * i) 
       startPoint.y = 0.0 
       endPoint.x = startPoint.x 
       endPoint.y = frame.size.height 
       context.move(to: CGPoint(x: startPoint.x, y: startPoint.y)) 
       context.addLine(to: CGPoint(x: endPoint.x, y: endPoint.y)) 
       context.strokePath() 
      } 

      let rowHeight = Int(rect.height)/(numberOfRows + 1) 
      for j in 1...numberOfRows { 
       var startPoint = CGPoint.zero 
       var endPoint = CGPoint.zero 
       startPoint.x = 0.0 
       startPoint.y = CGFloat(rowHeight * j) 
       endPoint.x = frame.size.width 
       endPoint.y = startPoint.y 
       context.move(to: CGPoint(x: startPoint.x, y: startPoint.y)) 
       context.addLine(to: CGPoint(x: endPoint.x, y: endPoint.y)) 
       context.strokePath() 
      } 
     } 
    } 
} 

Swift3

이를 사용 clear로의 배경 색상을 설정했습니다.

코드도 존재합니다. here