아주 실 용적 인 iOS 팁 10 가지
1.컨트롤 의 부분 원 각 문제
당신 도 이런 문제 에 부 딪 힌 적 이 있 습 니까?button 이나 label,오른쪽 에 있 는 두 개의 뿔 만 있 거나 한 개의 뿔 만 있 으 면 됩 니 다.어 떡 하지?이것 은 바로 도 층 몽 판이 우 리 를 도와 야 한다.
CGRect rect = CGRectMake(0, 0, 100, 50);
CGSize radio = CGSizeMake(5, 5);//
UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];
CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];// shapelayer
masklayer.frame = button.bounds;
masklayer.path = path.CGPath;//
button.layer.mask = masklayer;
예 를 들 어 button,UIView 에서 계승 하 는 다른 컨트롤 도 가능 합 니 다.2.navigationBar 의 투명 문제
navigation Bar 의 알파 만 0 으로 설정 하면 navigation Bar 를 숨 긴 셈 입 니 다.부모 보기 의 알파 가 0 으로 설정 되면 하위 보기 가 모두 투명 하 다 는 것 을 잘 알 고 있 습 니 다.그러면 해당 네 비게 이 션 바 의 제목 과 좌우 두 버튼 이 모두 사라 집 니 다.이렇게 하면 분명히 우리 가 요구 하 는 효과 에 이 르 지 못 한다.
(1)navigation Bar 만 투명 하 게 하려 면 버튼 과 제목 이 다음 과 같은 방법 을 사용 할 수 있 습 니 다.
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
// navigationBar ,
세심 한 당신 은 위 에 아래 그림 과 같은 선 이 있 는 것 을 발견 할 수 있 습 니 다.이것 은 우리 가 진일보 한 처 리 를 하고 실 을 제거 해 야 한다.다음 과 같은 방법 으로 하면 된다.
self.navigationController.navigationBar.shadowImage = [UIImage new];
// image 。
(2)만약 에 투명 한 기초 위 에서 드 롭 다운 거리 에 따라 투명 에서 불투명 해 지 는 효 과 를 실현 하려 면 위 에 있 는 것 이 힘 에 부 치 는 것 같 습 니 다.그러면 우리 가 다른 방법 을 사용 해 야 합 니 다.
//navigationBar , ,
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;
// scrollView alpha
3.navigationBar 제목 의 스타일 과 barItem 제목 스타일 을 전역 적 으로 설정 합 니 다.
//UIColorWithHexRGB( ) ,
[[UINavigationBar appearance] setBarTintColor:UIColorWithHexRGB(0xfefefe)];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFontboldSystemFontOfSize:18],NSForegroundColorAttributeName:UIColorWithHexRGB(0xfe6d27)}];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFontboldSystemFontOfSize:10],NSForegroundColorAttributeName : UIColorWithHexRGB(0x666666)}forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSiz
4.navigationBar 숨 기기 디 스 플레이 의 과도 함사용 중 에 분명히 만 났 을 거 라 고 믿 습 니 다.한 페이지 는 navigationBar 를 숨 기 고 다른 하 나 는 숨 기지 않 습 니 다.두 페이지 가 push 와 pop 을 진행 할 때,특히 사 이 드 슬라이딩 제스처 가 되 돌아 올 때 처리 하지 않 으 면 미끄럼 이 되 돌아 올 때 navigationBar 위치 가 비어 검은색 을 직접 표시 하거나 아래 보 기 를 표시 하면 보기 흉 합 니 다.이것 은 navigationBar 를 숨 기거 나 표시 하기 위해 과도 한 애니메이션 을 추가 해 야 합 니 다.
돌아 온 후에 나타 날 페이지 를 view WillAppear 방법 으로 만 듭 니 다.숨 기 려 면 YES 로 설정 하고 표시 하려 면 NO 로 설정 합 니 다.
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
5.사 이 드 스 케 이 트 제스처 되 돌리 기iOS 의 사 이 드 스 케 이 트 리 턴 제스처 는 좋 은 조작 체험 을 가지 고 있 으 며,사 이 드 스 케 이 트 리 턴 을 지원 하지 않 는 애플 리 케 이 션 은 절대 좋 은 애플 리 케 이 션 이 아니다.그러나 개발 과정 에서 리 턴 단 추 를 사용자 정의 하거나 일부 webView,table View 등 페이지 에서 옆으로 미 끄 러 지 는 제스처 가 효력 을 잃 었 습 니 다.이 럴 때 우리 가 설정 해 야 합 니 다.기본 클래스 에서 다음 과 같은 코드 를 협상 할 수 있 습 니 다.
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
//
self.navigationController.interactivePopGestureRecognizer.delegate = self;
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
문제:navigationController 의 맨 위 에 있 는 Controller 로 돌아 갈 때.다시 옆으로 미 끄 러 집 니 다.이때 push 페이지 를 클릭 하면 카드 나 를 발견 하고 반나절 이 지나 야 반응 할 수 있 습 니 다.최상 위 컨트롤 러 의 제스처 는 여전히 유효 하지만 미 끄 러 진 후 돌아 오 는 페이지 를 찾 지 못 하기 때문이다.소프트웨어 가 멈 추고 가사 하기 때문에 루트 뷰 컨트롤 러 에서 이 제스처 를 무효 로 해 야 합 니 다.아래 것 을 NO 로 설정 합 니 다.
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
물론 당신 도 제3자 라 이브 러 리 를 사용 할 수 있 습 니 다.아주 잘 썼 습 니 다.그 는 시스템 의 사 이 드 스 케 이 트 를 제스처 로 확대 하여 가장자리 에서 미 끄 러 지지 않 고 오른쪽으로 미 끄 러 지기 만 하면 돌아 올 수 있다.가장 중요 한 것 은 그 가 프로젝트 에 가입 하기 만 하면 되 고 코드 한 줄 없 이 이 루어 질 수 있다 는 것 이다.github 주소 첨부
https://github.com/forkingdog/FDFullscreenPopGesture
6.webView 에 머리 보기 추가
웹 뷰 는 scrollView 를 포함 하 는 복합 보기 입 니 다.scrollView 에는 UIWebBrowserView 가 들 어 있 습 니 다.(웹 뷰 를 표시 하 는 내용 을 담당 합 니 다)
UIView *webBrowserView = self.webView.scrollView.subviews[0];// webView webBrowserView
self.backHeadImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth,kScreenWidth*2/3.0)];
[_backHeadImageView sd_setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:[UIImageimageNamed:@"placeholderImage"]];
[self.webView insertSubview:_backHeadImageView belowSubview:self.webView.scrollView];
// backHeadImageView webView scrollView
CGRect frame = self.webBrowserView.frame;
frame.origin.y = CGRectGetMaxY(_backHeadImageView.frame);
self.webBrowserView.frame = frame;
// webBrowserView frame backHeadImageView ,
7.모드 전환 애니메이션 설정모드 점프 애니메이션 을 설정 하고 시스템 은 네 가지 선택 을 제공 합 니 다.
DetailViewController *detailVC = [[DetailViewController alloc]init];
//UIModalTransitionStyleFlipHorizontal
//UIModalTransitionStyleCoverVertical
//UIModalTransitionStyleCrossDissolve
//UIModalTransitionStylePartialCurl
detailVC.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentViewController:detailVC animated:YES completion:nil];
8.이미지 처 리 는 이미지 의 일부분 만 받 을 수 있 습 니 다.
UIImage *image = [UIImage imageNamed:filename];
CGImageRef imageRef = image.CGImage;
CGRect rect = CGRectMake(origin.x, origin.y ,size.width, size.height);
//
// 400x400 (0,0,400,400) ,
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect = [[UIImage alloc] initWithCGImage:imageRefRect];
9、UIView 에 그림 설정
UIImage *image = [UIImage imageNamed:@"playing"];
_layerView.layer.contents = (__bridge id)image.CGImage;
_layerView.layer.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
//
// , 0-1 ; x,y,widt,height
10.TableView 또는 Collection View 의 cell 에 간단 한 애니메이션 추가willDisplayCell 방법 에서 표시 할 cell 에 대해 애니메이션 을 만 들 면 됩 니 다.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
NSArray *array = tableView.indexPathsForVisibleRows;
NSIndexPath *firstIndexPath = array[0];
// anchorPoint
cell.layer.anchorPoint = CGPointMake(0, 0.5);
// cell , cell
cell.layer.position = CGPointMake(0, cell.layer.position.y);
// cell z 90 ,
if (firstIndexPath.row < indexPath.row) {
cell.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0);
}else{
cell.layer.transform = CATransform3DMakeRotation(- M_PI_2, 0, 0, 1.0);
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.