'Project/OpenSource'에 해당되는 글 4건

  1. 2014.07.22 [ChopeTableController] v0.3.0
  2. 2014.06.06 ChopeTableController
  3. 2014.01.22 ChopeToastView v0.1.1
  4. 2014.01.17 ChopeToastView로 cocoapods 처음 등록
Project/OpenSource2014.07.22 12:12

 v0.3.0

  • Cell에 표시할 data를 cellInfo에서 분리
  • cellInfo 설정 매소드 추가
  • data 설정 매소드 추가
  • 테스트 코드 변경


ChopeTableController

It is not subclass of UITableViewController.

Implemention of UITableViewDataSource, UITableViewDelegate.


@interface CPSimpleTableViewCell : UITableViewCell 

@property (nonatomic, weak) IBOutlet UILabel *titleLabel;

@end

@implementation CPSimpleTableViewCell

- (void)willMoveToSuperview:(UIView *)newSuperview {
    [super willMoveToSuperview:newSuperview];
    
    [self.titleLabel setTextColor:[UIColor whiteColor]];
}

+ (CGFloat)heightForCell:(id)data indexPath:(NSIndexPath *)indexPath {
    return 40 + (indexPath.row+1);
}

- (void)updateData:(id)data indexPath:(NSIndexPath *)indexPath {
    [self.titleLabel setText:data];
    [self setNormalBackgroundColor:indexPath];
}

- (void)setNormalBackgroundColor:(NSIndexPath *)indexPath {
    if (indexPath.row % 2 == 0) {
        [self setBackgroundColor:[UIColor darkGrayColor]];
    }
    else {
        [self setBackgroundColor:[UIColor purpleColor]];
    }
}

- (void)selectedWithData:(id)data indexPath:(NSIndexPath *)indexPath {
    [self setBackgroundColor:[UIColor blueColor]];
}

- (void)deselectedWithData:(id)data indexPath:(NSIndexPath *)indexPath {
    [self setNormalBackgroundColor:indexPath];
}

- (void)highlightedWithData:(id)data indexPath:(NSIndexPath *)indexPath {
    [self setBackgroundColor:[UIColor redColor]];
}

- (void)unhighlightedWithData:(id)data indexPath:(NSIndexPath *)indexPath {
    [self setNormalBackgroundColor:indexPath];
}

@end


Create ChopeTableController 

self.tableController = [[ChopeTableController alloc] init];


Set Table Information

ChopeTableInfo *tableViewInfo = [self.tableController addTableInfo:self.tableView paging:NO];
[tableViewInfo addCellClass:[CPSimpleTableViewCell class] cellIdentifier:CELL_IDENTIFIER_LABEL];
[tableViewInfo setDidLoadCellBlock:^(ChopeTableInfo *tableInfo, id <ChopeTableCellDelegate> cellDelegate, NSIndexPath *indexPath) {
        CPSimpleTableViewCell *cell = (CPSimpleTableViewCell *) cellDelegate;
        cell.button.tag = indexPath.row;
        [cell.button addTarget:self action:@selector(touchTestButton:) forControlEvents:UIControlEventTouchUpInside];
}];
[tableViewInfo setDidSelectRowBlock:^(ChopeTableInfo *cpTableInfo, NSIndexPath *indexPath) {
        NSLog(@"selected cell : %d", indexPath.row);
}];

paging:YES is not tested.


Add Data

cell information is about one cell.

  • Cell Class
  • Cell identifier


for (NSUInteger i=1; i<=100; i++) {
    [tableViewInfo addData:[NSString stringWithFormat:@"item - %d", i] cellIdentifier:CELL_IDENTIFIER_LABEL];
}


Screenshot



Github

https://github.com/chope-yoonhg84/ChopeTableController


Posted by 초프(초보 프로그래머)
Project/OpenSource2014.06.06 00:10

새로운 오픈소스를 하나 올렸습니다.

ChopeTableController

이름만 봐서는 UITableViewController의 subclass로 생각할 수도 있습니다. 하지만 그렇지 않습니다.

이건 번거로웠던 UITableViewDataSource, UITableViewDelegate 구현의 번거로움을 줄여보자고 만들었습니다.

두개의 protocol을 직접 구현하지 않고 데이터만 넘겨주면 바로 출력이 가능합니다.

UITableViewCell에서는 ChopeTableCellDelegate를 구현해야 하지만 어렵지 않습니다.

UIViewController에서 하던 작업을 Cell로옮겨서 UIViewController의 역할을 줄이는데 한몫하고 있습니다.


더 자세한 내용은 github의 README를 참고하세요.


https://github.com/chope-yoonhg84/ChopeTableController

Posted by 초프(초보 프로그래머)
Project/OpenSource2014.01.22 10:52

0.1 버전으로도 충분히 이용 가능합니다. 

하지만 비효율적으로 돌아가고 있습니다.


setPadding / setMargin 등을 할때마다 frame을 새로 계산해주고 있죠. 그러다 보니 setter를 구현해주고 있습니다.

0.1.1 에서는 setter를 없애고 조금 더 효율적인 방향으로 수정해 보았습니다.





http://cocoapods.org/?q=Chope

https://github.com/chope-yoonhg84/ChopeToastView

Posted by 초프(초보 프로그래머)
Project/OpenSource2014.01.17 10:28

iOS에서도 Android의 Toast같은 형태로 메세지를 보여주는 일이 많습니다.

Apple에서 제공하는 기능이 없어서 직접 구현해 보았습니다.


http://cocoapods.org/?q=chope


기본 사용 방법은 다음과 같습니다.

  • 기본 애니메이션
  • 기본 출력시간

[[ChopeToastView ToastViewWithMessage:@"TEST"] show];


보여지는 시간을 지정할 수 있습니다.

  • 기본 애니메이션
[[ChopeToastView ToastViewWithMessage:@"TEST"] showWithDuration:1.0];



애니메이션 지정도 가능합니다.

[[ChopeToastView ToastViewWithMessage:@"TEST"] showWithAnimation:^(ChopeToastView *toastView) {
    CGFloat y = toastView.frame.origin.y;
    
    CGRect frame = toastView.frame;
    frame.origin.y = -1 * toastView.frame.size.height;
    toastView.frame = frame;
    
    [UIView animateWithDuration:0.5
                     animations:^{
                         CGRect frame = toastView.frame;
                         frame.origin.y = y;
                         toastView.frame = frame;
                     }
                     completion:^(BOOL finished) {
                         [UIView animateWithDuration:0.5
                                               delay:3.0
                                             options:UIViewAnimationOptionTransitionNone
                                          animations:^{
                                              CGRect frame = toastView.frame;
                                              frame.origin.y +=  toastView.frame.size.height;
                                              toastView.frame = frame;
                                          }
                                          completion:^(BOOL finished) {
                                              [toastView hide];
                                          }];
                     }];
}];



이밖에도 여러가지 스타일을 지정할 수 있습니다.

현재까지 제공하는것으로는....

  • font
  • textColor
  • backgroundColor
  • backgroundAlpha
  • padding
  • margin
  • roundRadius


UIAppearance도 적용해 보려고 했지만... 빨리 올리고 싶었기 때문에... 시간 관계상 다음으로... :)

Posted by 초프(초보 프로그래머)