iPhone 6S 이후의 3D - 터치
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//动态添加 3Dtouch
self.window = [UIWindow new];
self.window.backgroundColor = [UIColor whiteColor];
self.window.frame = [[UIScreen mainScreen] bounds];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:[ViewController new]];
self.window.rootViewController = navi;
[self.window makeKeyAndVisible];
UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"one" localizedTitle:@"Little" localizedSubtitle:@"王先森" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];
UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"boss_red_dot"];
UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"two" localizedTitle:@"Daddy" localizedSubtitle:@"[email protected]" icon:icon2 userInfo:nil];
[UIApplication sharedApplication].shortcutItems = @[item1, item2];
return YES;
}
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
//对应的 3D 添加 效果
UINavigationController *navi = (UINavigationController *)self.window.rootViewController;
ViewController *vc = [[ViewController alloc] init];
if ([shortcutItem.type isEqualToString:@"one"]) {
vc.title = @"One";
vc.view.backgroundColor = [UIColor greenColor];
} else if ([shortcutItem.type isEqualToString:@"two"]) {
vc.title = @"Two";
vc.view.backgroundColor = [UIColor orangeColor];
}
[navi pushViewController:vc animated:YES];
}
shortcutItem.type
터치를 트리거하려면 UIView를 클릭하십시오.
- (BOOL)check3DTouch{
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
return YES;
} else {
return NO;
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if ([self check3DTouch]) {
UITouch *touch = [touches anyObject];
self.backgroundColor = [UIColor colorWithRed:touch.force / touch.maximumPossibleForce green:0.0f blue:0.0f alpha:1.0f];
} else {
NSLog(@"CAN NOT USE 3D TOUCH!");
}
}
touch.force
는 터치의 힘에 해당하고, touch.maximumPossibleForce
는 감지할 수 있는 최대 힘입니다. check3DTouch
현재 기기가 3d 터치 기능을 지원하는지 확인합니다.별도의 UIView를 터치하고 UITableView의 셀과 같이 이 UIView의 자식 컨트롤이 반응하도록 하려면
_tableview
상속된 UITableView는 셀을 클릭하여 터치 효과를 트리거합니다.//peek
- (UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location {
if ([self.presentedViewController isKindOfClass:[ViewController class]]) {
//已经推出 过了 就 不要再去 使用这个 代理了
return nil;
} else {
// ViewController *vc = [[ViewController alloc] init];
// vc.title = @"previewVC";
// vc.view.backgroundColor = [UIColor cyanColor];
location = [self.view convertPoint:location toView:_tableview];
NSIndexPath *indexPath = [_tableview indexPathForRowAtPoint:location];
ViewController *displayVC = [[ViewController alloc] init];
displayVC.title = [_tableview cellForRowAtIndexPath:indexPath].textLabel.text;
displayVC.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 256.0
green:arc4random() % 256 / 256.0
blue:arc4random() % 256 / 256.0
alpha:1.0];
// peek预览窗口大小
displayVC.preferredContentSize = CGSizeMake(0.0, 100 * indexPath.row);
// 进入peek前不被虚化的rect
previewingContext.sourceRect = [self.view convertRect:[_tableview cellForRowAtIndexPath:indexPath].frame fromView:_tableview];
return displayVC;
}
}
//pop
- (void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
[self showViewController:viewControllerToCommit sender:self];
}
location = [self.view convertPoint:location toView:_tableview];
NSIndexPath *indexPath = [_tableview indexPathForRowAtPoint:location];
프롬프트 상자 엿보기
//peek 提示框
- (NSArray> *)previewActionItems {
UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Little" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
NSLog(@"点击执行的操作");
}];
UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"Daddy" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
}];
NSArray *actions = @[action1, action2];
UIPreviewActionGroup *group = [UIPreviewActionGroup actionGroupWithTitle:@"多组按钮" style:UIPreviewActionStyleDefault actions:actions];
UIPreviewAction *action4 = [UIPreviewAction actionWithTitle:@"单组按钮" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
}];
NSArray *array = @[group, action4];
return array;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.