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

Reply via email to