0
일부 레이블을 미리 정의하고 해당 값을 UIScrollView에 바인딩하는 클래스가 있습니다.UIScrollView 및 UIPageControl, 내가 뭘 잘못하고 있니?
나는 그 레이블을 보여줄 수 있었지만 이제는 ScrollView의 두 번째 부분에 레이블을 붙이는데 박차를 가하고 있습니다.
프로젝트를 gitHub (으)로 푸시했습니다.
이미 표시된 부분에서 라벨의 위치를 변경할 수 있지만 뭔가를 내려야합니다.
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = _detail.name;
UIColor *bgColor = [UIColor blackColor];
UIColor *txtColor = [UIColor grayColor];
CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size.width = _scrollView.frame.size.width *2;
NSString *phoneNr = (_detail.phoneNr == nil) ? @"Not specified" : _detail.phoneNr;
_telLabel = [self prepareLabel:phoneNr textColor:txtColor bgColor:bgColor page:0 y:telNrYAxis];
_webLabel = [self prepareLabel:@"Visit website" textColor:txtColor bgColor:bgColor page:0 y:websiteYAxis];
_detail.address = [_detail.address stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\t "]];
NSArray *addressArrComponents = [_detail.address componentsSeparatedByString:@","] ;
_addressLabel = [self prepareLabel:[addressArrComponents componentsJoinedByString:@"\n"] textColor:txtColor bgColor:bgColor page:0 y:addressYAxis];
UILabel *lbl = [self prepareLabel:@"Derp" textColor:txtColor bgColor:bgColor page:1 y:0];
_detailView = [[UIView alloc] initWithFrame:frame];
_detailView.backgroundColor = [UIColor blackColor];
[_detailView addSubview:_webLabel];
[_detailView addSubview:_addressLabel];
[_detailView addSubview:_telLabel];
[_detailView addSubview:lbl];
[_scrollView addSubview:_detailView];
NSLog(@"%f",self.view.frame.size.height - (_scrollView.frame.origin.y + _scrollView.frame.size.height));
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height - 250 , self.view.frame.size.width/4, 120)];
_pageControl.numberOfPages=2;
_pageControl.currentPage=0;
[_pageControl addTarget:self action:@selector(pageChange:) forControlEvents:UIControlEventTouchDown];
_scrollView.contentSize = CGSizeMake(800,800);
_scrollView.delegate=self;
_scrollView.backgroundColor = [UIColor blackColor];
_scrollView.pagingEnabled=YES;
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.showsVerticalScrollIndicator = NO;
_scrollView.scrollsToTop = NO;
[self pageChange:0];
[self.view addSubview:_pageControl];
// Do any additional setup after loading the view.
}
-(UILabel*)prepareLabel:(NSString*) text textColor:(UIColor*)textColor bgColor:(UIColor*)backgroundColor page:(int)page y:(int) yPos{
int lines = [[text componentsSeparatedByString:@"\n"] count];
CGRect labelFrame = CGRectMake(_detailView.frame.size.width * page +20,yPos,self.view.frame.size.width, [UIFont systemFontSize]*lines);
UILabel *returnLabel = [[UILabel alloc] initWithFrame:labelFrame];
returnLabel.text = text;
returnLabel.backgroundColor = backgroundColor;
returnLabel.textColor = textColor;
[returnLabel setNumberOfLines:lines];
[returnLabel sizeToFit];
return returnLabel;
}
- (void)loadScrollViewWithPage:(int)page {
NSLog(@"Derped");
}
-(IBAction)pageChange:(id)sender{
int page=_pageControl.currentPage;
CGRect frame = _scrollView.frame;
frame.origin.x = _scrollView.frame.size.width * page;
frame.origin.y = 0;
//CGRect frame= (page == 0) ? _detailFrame : _reviewFrame;
NSLog(@"%f",frame.origin.x);
[_scrollView scrollRectToVisible:frame animated:YES];
}
대리인 -(IBAction)pageChange:(id)sender
트리거됩니다,하지만 어딘가 프레임에 뭔가 일을해야합니다의
를 살펴주세요!
감사합니다, 나는 그 해결책이 될 거라고 생각하지 않습니다하지만. (나는 노력했지만 그렇지 않다). 프레임과 관련하여 뭔가를 간과 할 수는 있지만, 레이블이 올바르게 배치되지 않았거나 프레임이 충분히 크지는 않습니다. (후자는 논리적으로 초기화 할 수 없기 때문에 scrollView 너비를 twiced하지만 결코 알지 못한다.) 건배 – Daneo