Okay - Paintcode to the rescue. I made my art in Illustrator, and I can support up to 45 values @ the moment (each segment an 8ยบ rotation). I if/else the hell out of whether or not a line gets stroked based on the number of ticks. At least my artwork for the dial looks good now. Thanks for that suggestion. If I ever need more than 45 values, I'll probably need to revisit this solution, but I should be okay.
On Thu, Jan 19, 2017 at 8:48 AM Eric E. Dolecki <edole...@gmail.com> wrote: > [image: knob.jpg] > > I have this Class that I am testing out. However, the position of the > ticks is off. Seems like it needs to be moved down 1/2 way and the same to > the right. I tried doing this with a shape layer and moving that - but it > didn't change the appearance. Also, it seems like the spacing between ticks > is way off (very far apart). I am looking for a solution to this current > problem, please. > > class Disc: UIView { > > // Defaults. > private var myOuterRadius: CGFloat = 100.0 > private var myInnerRadius: CGFloat = 90.0 > private var myNumberOfTicks: Int = 5 > > override func draw(_ rect: CGRect) > { > let strokeColor = UIColor.black > let tickPath = UIBezierPath() > for i in 0..<myNumberOfTicks { > let angle = CGFloat(i) * CGFloat(2 * M_PI) / > CGFloat(myNumberOfTicks) > let inner = CGPoint(x: myInnerRadius * cos(angle), y: > myInnerRadius * sin(angle)) > let outer = CGPoint(x: myOuterRadius * cos(angle), y: > myOuterRadius * sin(angle)) > print(angle, inner, outer) > tickPath.move(to: inner) > tickPath.addLine(to: outer) > } > tickPath.close() > tickPath.lineCapStyle = .round > strokeColor.setStroke() > tickPath.lineWidth = 2 > tickPath.stroke() > } > > init(width: CGFloat, numTicks: Int) > { > super.init(frame: CGRect(x: 0, y: 0, width: width, height: width)) > myOuterRadius = width / 2 > myInnerRadius = (width / 2) - 10 > myNumberOfTicks = numTicks > self.backgroundColor = UIColor(netHex: 0xEEEEEE) > self.layer.cornerRadius = CGFloat(width / 2) > self.layer.masksToBounds = true > } > > required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has > not been implemented") } > } >
_______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com