2011-10-21 23 views
2

背景があります。私は息子の学校の学生のグループを支援しています。彼らはiPod Touchで使用される管理者の観察結果を簡単に追跡するアプリケーションを作成したいと考えています。iOS水平スクロールカレンダー

標準のウィジェットを使用して非常に基本的なiOS開発を行っただけですが、私は熱心に援助しています。

私たちは、アプリケーションの機能とインターフェイスを設計し、プログラムを開始しています。私が深くないところにいるのは、画面の一番下に沿ってストリップを走らせたいということです。毎日、日付と日付を表示する小さなブロックとその日の観測があるかどうかを示すインジケータが表示されます。

私はあなたが正しい方向、つまり既存のウィジェットを指し示すことができるか、またはこれを達成する方法を詳細に説明することができることを期待していました。私は運がないいくつかのアプローチを試みました。

私はこれが共通の要件でなければならないことを知っているので、私はこれを助けてくれてありがとうと思いますが、私はこれを克服するのに苦労しています。

答えて

5

私は、他の人が役に立つと思うように私が最終的な解決策を投稿すると思っていました。

ビューでは、基本的にテーブルを90度回転させた後、各テーブルのセルを-90度回転させるカスタムUITableViewControllerを追加しました。それは、私がしたいことは、かなり簡単です。

ルートビューコントローラのコード。これは、テーブルのサイズと位置を設定します。

scrollingDateViewController=[[ScrollingDateViewController alloc] initWithNibName:@"ScrollingDateView" bundle:[NSBundle mainBundle]]; 
CGRect rect=CGRectMake(0,330,320,100);  
scrollingDateViewController.view.frame=rect; 
scrollingDateViewController.view.backgroundColor=[UIColor clearColor]; 
scrollingDateViewController.delegate = self; 
[self.view addSubview:scrollingDateViewController.view]; 

ScrollingDateViewControllerのキーコード。私はちょうどすることができ、

- (void)viewDidLoad { 
today = [[NSDate alloc] init];  
CGRect rect=self.view.frame; 
myTableView.frame=rect; 
myTableView.layer.transform = CATransform3DRotate(CATransform3DIdentity,1.57079633,0,0,1); 
myTableView.backgroundColor=[UIColor clearColor]; 
myTableView.separatorColor=[UIColor clearColor]; 
myTableView.frame=rect; 
myTableView.rowHeight=44; // cellWidth 
myTableView.showsHorizontalScrollIndicator=NO; 
myTableView.showsVerticalScrollIndicator=NO; 
myTableView.separatorColor=nil; 

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"tableCell"]; 
if(!cell){ 
    cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"tableCell"]; 
    cell.contentView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"cell_back.png"]]; 
    cell.contentView.transform = CGAffineTransformMakeRotation(-1.57079633); 
    cell.selectionStyle=UITableViewCellSelectionStyleGray; 

    // Add background image view 
    CGRect rect=CGRectZero; 
    UIImageView *imgView=[[UIImageView alloc] initWithFrame:rect]; 
    imgView.contentMode=UIViewContentModeScaleToFill; 
    imgView.layer.transform = CATransform3DRotate(CATransform3DIdentity,-1.57079633,0,0,1); 
    imgView.tag=101; 
    [cell addSubview:imgView]; 

    rect.origin.x=0; 
    rect.origin.y=0; 
    rect.size.height=80; 
    rect.size.width=44; 
    imgView.frame=rect; 
    [imgView release]; 

    // Add Day Label 
    UILabel *dayLabel=[[UILabel alloc] initWithFrame:rect]; 
    dayLabel.layer.transform = CATransform3DRotate(CATransform3DIdentity,-1.57079633,0,0,1); 
    dayLabel.tag=102; 
    dayLabel.font = [UIFont fontWithName:@"Geogrotesque-Medium" size:14.0]; 
    dayLabel.textAlignment=UITextAlignmentCenter; 
    dayLabel.backgroundColor=[UIColor clearColor]; 
    dayLabel.textColor=[UIColor darkGrayColor]; 

    [cell addSubview:dayLabel]; 
    rect.origin.x=40; 
    rect.origin.y=0; 
    rect.size.height=44; 
    rect.size.width=20; 
    dayLabel.frame=rect; 
    [dayLabel release]; 

    // Add Date Label 
    UILabel *dateLabel=[[UILabel alloc] initWithFrame:rect]; 
    dateLabel.layer.transform = CATransform3DRotate(CATransform3DIdentity,-1.57079633,0,0,1); 
    dateLabel.tag=103; 
    dateLabel.font = [UIFont fontWithName:@"Geogrotesque-Bold" size:18.0 ]; 
    dateLabel.textAlignment=UITextAlignmentCenter; 
    dateLabel.backgroundColor=[UIColor clearColor]; 
    dateLabel.textColor=[UIColor darkGrayColor]; 

    [cell addSubview:dateLabel]; 
    rect.origin.x=55; 
    rect.origin.y=0; 
    rect.size.height=44; 
    rect.size.width=20; 
    dateLabel.frame=rect; 

    [dateLabel release]; 
} 

UILabel *label=(UILabel*)[cell viewWithTag:102]; 
label.text= [self getDayString:displayDate]; 
label=(UILabel*)[cell viewWithTag:103]; 
label.text= [self getDateString:displayDate]; 
return cell; 

} 
+0

包括的な回答 –

+0

こんにちはZoran、私は同様のコンポーネントとソリューションに取り組んでいる私はちょっと現時点では固執している場所に関連するようです。 このプロジェクトの一環として無限のスクロールを実装する必要があるのだろうか? – ymotov

+0

私はテーブルサイズに本当に大きな数字を使用し、各セルの日付を動的に計算しました。私はそれの周りに他の方法を見ることができませんでした。 – Zoran

1

IMHOの場合は、日付ごとに表示するビューを作成する必要があります。

@interface DayView : UIView { 

これをnibで実装したり、すべてをプログラムでdrawRectメソッドで作成したりすることができます。

Xcodeのドキュメントに行き、UIScrollViewを検索した後。 Xcodeはコードサンプルを提供し、プロジェクト "scrolling"を使ってscrollViewの使い方を調べます。このサンプルでは写真をスクロールし、カスタムDayViewsで置き換えています。

幸運を祈る!

+0

IがのUITableViewアプローチを選んだ理由は、それは私が必要遅延ロード機能を得ることである:これは表90度、各セル-90 degressを回転させますUITableViewデキュー機能を使用すると、UIScrollViewと同じように、同じ動作を自分で実装する必要があります。事実、私の限られた経験で、私は働いた最初のテクニックを使用しました。 – Zoran

+0

かなり良い解決策。 –