새로운 기능을 추가했습니다.

  • 로그인 기능 추가
  • 게시판 기능 추가
  • 오류 수정

 

 



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

도서관 좌석 정보 v3.2.0 – Android

  • 전면광고 위치 변경
  • 좌석정보 공유하기 추가
  • 오류 수정


Download

Posted by 초프(초보 프로그래머)
Project2014.07.22 12:14

지난 주에 만들어 보고 싶어서 옐로우 카드라는 앱을 만들었다.

이름에 맞게 옐로우 카드를 보여주는 앱이다. 터치를 한번하면 레드 카드가 나온다.

GA도 붙이고 바로 앱스토어에 올렸다.


리뷰 상태로 변경되는 것을 보고 잠이 들었다. 아침에 출근해서 확인하니… 리젝!

이유를 보니 유용하지 않아서!!!!!  심판들이 유용하게 쓸수 있다고!!!


2.12: Apps that are not very useful, unique, are simply web sites bundled as Apps, or do not provide any lasting entertainment value may be rejected 

10.6: Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. If your user interface is complex or less than very good, it may be rejected


그냥 버려야지 ㅜ.ㅜ 다른 앱으로 다시 도전해 보자!!

Posted by 초프(초보 프로그래머)
TAG Card, ios, Red, Yellow
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 초프(초보 프로그래머)

"먹고살려고 광고쓰는거이해하는데 전면광고뜨고나면 껏다켜야되고 엑스자 잘못누르기라도하면 플레이스토어도 꺼야되고 다시켰다꺼야되고 이러다 사용자 팍줄면 그때가서 후회하시렵니까"

"도서관자리볼수있어서정말진짜좋긴좋은데계속광거떠서진짜너무싫어요광고안뜨게좀해주세요"

"광고좀!!!!!!! 없애주세여!!!!!!! 왜 자꾸 떠!!!!!"

"어플실행할때마다 그걸 꼭 일일이 눌러야하는지.. X를 잘못눌러서 광고물을 누르면 다른곳에 들어가지고 짜증이나네요.. 아예 안뜨게해주시면 안되나요? 저뿐만아니라 다른 많은분들도 광고때문에 불편함을 겪고계실텐데요.."


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

벌써 3월 11일이네요..

새학기가 시작되는 달이라 다운로드 수가 어떻게 변경했는지 확인해 봤습니다.

예상대로 개강하자마자 다운로드가 많이 늘어 났는데 그것도 하루뿐이네요.


'도서관 좌석 정보' Android


'도서관 좌석 정보' iOS


실제 수치 차이는 크지만 Android, iOS모두 3/1에 큰 수치로 늘었습니다.

이번주 수치는 정확히 나오지 않아서 모르겠지만 아마 주말에 많이 올라갔을 것으로 보입니다.


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

'도서관 좌석 정보' 아이폰앱이 1.1로 업데이트되었습니다.

- Facebook, KakaoTalk 로그인 연동
- 도서관별 게시판 추가
- 지도에서 도서관 위치 확인


https://itunes.apple.com/us/app/doseogwan-jwaseog-jeongbo/id498836252?mt=8

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 초프(초보 프로그래머)