2012-02-25 40 views
3

基本上,我想有一個應用程序,只有一個在它的形象圖。我希望能夠向左或向右滑動,讓第一張圖像離開視圖,第二張圖像進入。圖像是相同的,我希望它看起來像是連接起來的(就像向下滾動繩子一樣該模式只是重複,但它看起來像一個不斷滾動)。我需要它能夠更改圖像或在一系列滑動後重新啓動。我知道我需要在UIScrollView中打開分頁,但是我對iOS很陌生,遇到了麻煩。的iOS:如何通過圖像與分頁刷卡上

最後,我想擁有iPhone的振動每一個所謂的某某揮筆(並重新啓動模式)。

我敢肯定,有很多方法可以做到這一點(即一個TableView中)可以隨意只是點我一些參考的方向如果答案是單調乏味的解釋。

謝謝!

跟進:

我發現,做的非常接近我想要做一個蘋果的例子。我對它做了很多調整,但是我正在撞牆,試圖讓圖像循環。這是我認爲是有問題的代碼,但我不確定解決方案是什麼,因爲ScrollView是功能性的,它只是不會將中心重置爲當前視圖。有任何想法嗎?

- (void)layoutScrollImages 
{ 
     UIImageView *view = nil; 
     NSArray *subviews = [scrollView1 subviews]; 

    // reposition all image subviews in a horizontal serial fashion 
    CGFloat curXLoc = 0; 
    for (view in subviews) 
    { 
     if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
     { 
      CGRect frame = view.frame; 
      frame.origin = CGPointMake(curXLoc, 0); 
      view.frame = frame; 

      curXLoc += (kScrollObjWidth); 
     } 
    } 

    // set the content size so it can be scrollable 
    [scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 

} 

回答

6

我只用一個UIScrollView。設置,則contentWidth是視圖(3頁)的寬度/高度的3倍,並設置contentOffset爲中心「頁」(取決於你水平分別垂直/滾動view.bounds.size.widthview.bounds.size.height)。你需要爲UIScrollView(可能是視圖控制器)設置一個委託並實現- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView。這將在滾動視圖結束減速時調用。一旦完成減速,將contentOffset重置回中央視圖。這應該給人以無限滾動的印象。您也可以設置一個計數器,以在scrollViewDidEndDecelerating方法中增加計數器或啓動振動。

你不應該需要保持重新定位圖像。只需在scrollView中設置圖像一次:

//Horizontal arrangement 
UIImage *image = [UIImage imageNamed:@"nameOfImage.png"]; 
UIImageView *imageView1 = [[UIImageView alloc] initWithImage:image]; 
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:image]; 
UIImageView *imageView3 = [[UIImageView alloc] initWithImage:image]; 
NSArray *imageViews = [NSArray arrayWithObjects:imageView1, imageView2, imageView3]; 
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview: scrollView]; //This code assumes it's in a UIViewController 
CGRect cRect = scrollView.bounds; 
UIImageView *cView; 
for (int i = 0; i < imageViews.count; i++){ 
    cView = [imageViews objectAtIndex:i]; 
    cView.frame = cRect; 
    [scrollView addSubview:cView]; 
    cRect.origin.x += cRect.size.width; 
} 
scrollView.contentSize = CGSizeMake(cRect.origin.x, scrollView.bounds.size.height); 
scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0); //should be the center page in a 3 page setup 

因此,圖像設置,你不需要再亂用它們了。剛復位contentOffset當滾動停止看法(注:你需要確保你的滾動視圖的委託或滾動視圖停止時,你不會收到消息):

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 
    scrollView.contentOffset = CGPointMake(scrollview.bounds.size.width, 0); 
} 

請原諒任何錯別字。我用手寫出了它。

+0

感謝您的好回答。我會盡力嘗試 – Sneagan 2012-02-25 03:02:57

+0

我發現了一個非常接近我想做的事情的Apple例子。我對它做了很多調整,但是我正在撞牆,試圖讓圖像循環。這是我認爲是有問題的代碼,但我不確定解決方案是什麼,因爲ScrollView是功能性的,它只是不會將中心重置爲當前視圖。有任何想法嗎? 代碼在上面。 – Sneagan 2012-02-25 17:41:12

+0

這看起來不錯。一旦我找出什麼是哨兵是爲什麼NSArray缺少一個它看起來應該工作(從我的搜索看來,哨兵問題與NSArray的子​​類化有關,我相信我有這個問題表明我的經驗水平,而不是你的做法)。我非常感謝你給我的幫助。在完成2本代碼書之後,我決定以這種方式學習是最好的,而且你一直在幫助很大。 – Sneagan 2012-02-26 00:19:25

1

看看cocoacontrols.com爲自定義相冊視圖。至於振動,這個代碼片斷振動電話(請確保您鏈接到與#import <AudioToolbox/AudioToolbox.h>):

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
+0

謝謝!我一定會使用它。 – Sneagan 2012-02-25 03:02:41

+0

沒問題。除非絕對必要,否則我的建議不是振動手機。這有點煩人! – CodaFi 2012-02-25 03:21:09

+0

我可能會最終成爲一個設置。我的沉默生活,所以我不會強迫任何人振動。 :) – Sneagan 2012-02-25 03:28:15

相關問題