Skip to content
This repository has been archived by the owner on Mar 24, 2023. It is now read-only.
Eonist edited this page Aug 15, 2016 · 19 revisions

Welcome to the Element-iOS wiki!

Goals for Element-iOS:

  • Styles that query a cache. To speed up style retrieval
  • Struct, Enum, and if let style code. Figure out why nil coalescing is so bad
  • Read more books from objc.io to include more syntactic swift sugar
  • Dedicated iOS Lib: swift-utils-iOS

GraphicDrawing research:

  • UIView is always using CoreAnimation backing instead of the three modes that NSView supports

Drawing in UIView:

override drawRect(){
	let context:CGContextRef = UIGraphicsGetCurrentContext()
}

override func drawRect(rect: CGRect) {
  var path = UIBezierPath(ovalInRect: rect)
  UIColor.greenColor().setFill()
  path.fill()
}

//Drawing a gradient:
override func drawRect(rect: CGRect) {
 
      //2 - get the current context
      let context = UIGraphicsGetCurrentContext()
      let colors = [startColor.CGColor, endColor.CGColor]
 
      //3 - set up the color space
      let colorSpace = CGColorSpaceCreateDeviceRGB()
 
      //4 - set up the color stops
      let colorLocations:[CGFloat] = [0.0, 1.0]
 
      //5 - create the gradient
      let gradient = CGGradientCreateWithColors(colorSpace, 
                                                colors, 
                                                colorLocations)
 
      //6 - draw the gradient
      var startPoint = CGPoint.zeroPoint
      var endPoint = CGPoint(x:0, y:self.bounds.height)
      CGContextDrawLinearGradient(context, 
                                  gradient, 
                                  startPoint, 
                                  endPoint, 
                                  0)
    }
}

some obj-c example:

//Draw Lines
(void) drawRect:(CGRect)rect{
	 //Get the CGContext from this view
	 CGContextRef context = UIGraphicsGetCurrentContext();

	 //Set the stroke (pen) color
	 CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
	 //Set the width of the pen mark
	 CGContextSetLineWidth(context, 5.0);

	 // Draw a line
	 //Start at this point
	 CGContextMoveToPoint(context, 10.0, 30.0);

	 //Give instructions to the CGContext
	 //(move "pen" around the screen)
	 CGContextAddLineToPoint(context, 310.0, 30.0);
	 CGContextAddLineToPoint(context, 310.0, 90.0);
	 CGContextAddLineToPoint(context, 10.0, 90.0);

	 //Draw it
	 CGContextStrokePath(context);
 }
 
 Draw Rectangle
 
 //Get the CGContext from this view
 CGContextRef context = UIGraphicsGetCurrentContext();

 //Draw a rectangle
 CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
 //Define a rectangle
 CGContextAddRect(context, CGRectMake(10.0, 150.0, 60.0, 120.0));     //X, Y, Width, Height
 //Draw it
 CGContextFillPath(context);
Clone this wiki locally