1. iphone/ipad大小
Device | Screen dimensions(in points) |
iphone and ipod | 320 X 480 |
ipad | 768 X 1024 |
2. UIScreen bounds and applicationFrame
[UISCreen mainScreen].bounds, 永遠(yuǎn)返回portait模式的width/height, 也就是說(shuō)width:320 height:480 for iPhone
[UISCreen mainScreen].applicationFrame更加復(fù)雜一些,它考慮了status bar的高度。
portait模式, x:0, y:20, width:320, height:460
landscape, x:20, y:0, width:300, height:480
關(guān)于frame和bounds的區(qū)別,請(qǐng)參考UIView中的frame和bounds屬性的區(qū)別
3. status bar height: 20, tool bar height: 44, tab bar height:44
4. UIScrollView
// Called when the UIKeyboardDidShowNotification is sent.- (void)keyboardWasShown:(NSNotification*)aNotification{ NSDictionary* info = [aNotification userInfo]; CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); scrollView.contentInset = contentInsets; scrollView.scrollIndicatorInsets = contentInsets; // If active text field is hidden by keyboard, scroll it so it's visible // Your application might not need or want this behavior. CGRect aRect = self.view.frame; aRect.size.height -= kbSize.height; if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) { //判斷該text field是否在可見(jiàn)區(qū)域 CGPoint scrollPoint = CGPointMake(0.0, instance); //這里需要計(jì)算需要scroll的長(zhǎng)度,假設(shè)instance是計(jì)算出來(lái)的結(jié)果。 [scrollView setContentOffset:scrollPoint animated:YES]; }}
原文來(lái)自這里, 這里介紹幾個(gè)關(guān)鍵的內(nèi)容:
1. pagingMode需要設(shè)置為YES
2. contentSize是所有頁(yè)數(shù)的width總和, 例如你需要顯示100頁(yè),那contentSize的寬度就是100*scroll.frame.size.width
3. showsHorizontalScrollIndicator和showsVerticalScrollIndicator設(shè)置為NO
然后需要在scroll view的delegate中實(shí)現(xiàn)scrollViewDidScroll:方法,這個(gè)方法在scroll view的contentOffSet發(fā)生變化的時(shí)候被調(diào)用。翻頁(yè)模式的核心思想就是scroll view需要顯示下一頁(yè)的時(shí)候,創(chuàng)建一個(gè)view, 在這個(gè)view上準(zhǔn)備好數(shù)據(jù),然后把這個(gè)view加到scroll view當(dāng)前顯示的位置。
代碼如下所示,另外還可以改進(jìn)的一個(gè)地方是需要翻頁(yè)之前,需要把后面一頁(yè)的內(nèi)容也顯示出來(lái),否則會(huì)有一半黑的屏幕顯示。
-(void) loadPageView:(NSUInteger)page{ UIView* view = [[UIView alloc] init]; view.backgroundColor = [UIColor whiteColor]; CGRect rc = self.view.frame; rc.origin.y = 0; rc.origin.x = page * self.view.frame.size.width; //創(chuàng)建一個(gè)view,調(diào)整x直,因?yàn)槠渌焙蛃croll view都是一樣的 view.frame = rc; UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, rc.size.width, 40)]; label.text = [NSString stringWithFormat:@"current page is :%d", page]; [view addSubview:label]; [(UIScrollView*)self.view addSubview:view];}- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (scrollView.contentOffset.x >= (myCurrentPage+0.5) * self.view.frame.size.width) //需要顯示下一頁(yè)了 { myCurrentPage++; [self loadPageView:myCurrentPage]; }}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注