// // RuledScrollView.m // SpectogramPrototype // // Created by Joshua Moerman on 24/12/13. // Copyright (c) 2013 Joshua Moerman. All rights reserved. // #import "RuledScrollView.h" #import "Ruler.h" @interface RuledScrollView () { CGFloat rulerHeight; CGFloat rulerWidth; } - (void) initView; @end @implementation RuledScrollView @synthesize content, topRuler, leftRuler; - (id)initWithFrame:(CGRect)frame{ if(self = [super initWithFrame:frame]){ [self initView]; } return self; } - (id)initWithCoder:(NSCoder *)aDecoder{ if(self = [super initWithCoder:aDecoder]){ [self initView]; } return self; } - (void)initView { rulerHeight = 44; rulerWidth = 120; self.delegate = self; self.backgroundColor = [UIColor whiteColor]; content = [[UIView alloc] initWithFrame:self.frame]; content.autoresizesSubviews = NO; [self addSubview:content]; CGRect frame2 = self.frame; frame2.size.height = rulerHeight; topRuler = [[HorizontalRuler alloc] initWithFrame:frame2]; topRuler.layer.opacity = 0.5; [self addSubview:topRuler]; CGRect frame3 = self.frame; frame3.size.width = rulerWidth; leftRuler = [[VerticalRuler alloc] initWithFrame:frame3]; leftRuler.layer.opacity = 0.5; [(VerticalRuler*)leftRuler setTuning: 440.0f]; [self addSubview:leftRuler]; } - (void)layoutSubviews { [super layoutSubviews]; const CGRect frame = {.origin = self.contentOffset, .size = self.bounds.size}; const CGRect vis_frame = [self convertRect:self.bounds toView:content]; { CGRect frame2 = frame; frame2.size.height = rulerHeight; self.topRuler.frame = frame2; CGFloat begin = vis_frame.origin.x; CGFloat end = vis_frame.origin.x + vis_frame.size.width; topRuler.visibleInterval = (Interval){.begin = begin, .end = end}; } { CGRect frame2 = frame; frame2.size.width = rulerWidth; self.leftRuler.frame = frame2; CGFloat begin = vis_frame.origin.y; CGFloat end = vis_frame.origin.y + vis_frame.size.height; leftRuler.visibleInterval = (Interval){.begin = begin, .end = end}; } } - (void)setContentSize:(CGSize)contentSize{ [super setContentSize:CGSizeMake(contentSize.width + rulerWidth, contentSize.height + rulerHeight)]; content.frame = CGRectMake(rulerWidth, rulerHeight, contentSize.width, contentSize.height); } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)__unused scrollView{ return content; } @end