Bring the 3D Touch tick sound for Apps from iOS 13 to iOS 12 and lower
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

TCKRootListController.m 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #include "TCKRootListController.h"
  2. @implementation TCKRootListController
  3. - (instancetype)init {
  4. self = [super init];
  5. if (self) {
  6. TCKAppearanceSettings *appearanceSettings = [[TCKAppearanceSettings alloc] init];
  7. self.hb_appearanceSettings = appearanceSettings;
  8. self.respringButton = [[UIBarButtonItem alloc] initWithTitle:@"ReSpring"
  9. style:UIBarButtonItemStylePlain
  10. target:self
  11. action:@selector(respring)];
  12. self.respringButton.tintColor = [UIColor whiteColor];
  13. self.navigationItem.rightBarButtonItem = self.respringButton;
  14. self.navigationItem.titleView = [UIView new];
  15. self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)];
  16. self.titleLabel.font = [UIFont boldSystemFontOfSize:17];
  17. self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
  18. self.titleLabel.text = @"Tick";
  19. self.titleLabel.textColor = [UIColor whiteColor];
  20. self.titleLabel.textAlignment = NSTextAlignmentCenter;
  21. [self.navigationItem.titleView addSubview:self.titleLabel];
  22. self.iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,10,10)];
  23. self.iconView.contentMode = UIViewContentModeScaleAspectFit;
  24. self.iconView.image = [UIImage imageWithContentsOfFile:@"/Library/PreferenceBundles/TickPrefs.bundle/icon@2x.png"];
  25. self.iconView.translatesAutoresizingMaskIntoConstraints = NO;
  26. self.iconView.alpha = 0.0;
  27. [self.navigationItem.titleView addSubview:self.iconView];
  28. [NSLayoutConstraint activateConstraints:@[
  29. [self.titleLabel.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor],
  30. [self.titleLabel.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor],
  31. [self.titleLabel.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor],
  32. [self.titleLabel.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor],
  33. [self.iconView.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor],
  34. [self.iconView.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor],
  35. [self.iconView.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor],
  36. [self.iconView.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor],
  37. ]];
  38. }
  39. return self;
  40. }
  41. -(NSArray *)specifiers {
  42. if (_specifiers == nil) {
  43. _specifiers = [[self loadSpecifiersFromPlistName:@"Root" target:self] retain];
  44. }
  45. return _specifiers;
  46. }
  47. - (void)viewDidLoad {
  48. [super viewDidLoad];
  49. self.headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,200)];
  50. self.headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,200,200)];
  51. self.headerImageView.contentMode = UIViewContentModeScaleAspectFill;
  52. self.headerImageView.image = [UIImage imageWithContentsOfFile:@"/Library/PreferenceBundles/TickPrefs.bundle/Banner.png"];
  53. self.headerImageView.translatesAutoresizingMaskIntoConstraints = NO;
  54. [self.headerView addSubview:self.headerImageView];
  55. [NSLayoutConstraint activateConstraints:@[
  56. [self.headerImageView.topAnchor constraintEqualToAnchor:self.headerView.topAnchor],
  57. [self.headerImageView.leadingAnchor constraintEqualToAnchor:self.headerView.leadingAnchor],
  58. [self.headerImageView.trailingAnchor constraintEqualToAnchor:self.headerView.trailingAnchor],
  59. [self.headerImageView.bottomAnchor constraintEqualToAnchor:self.headerView.bottomAnchor],
  60. ]];
  61. _table.tableHeaderView = self.headerView;
  62. }
  63. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  64. tableView.tableHeaderView = self.headerView;
  65. return [super tableView:tableView cellForRowAtIndexPath:indexPath];
  66. }
  67. - (void)viewWillAppear:(BOOL)animated {
  68. [super viewWillAppear:animated];
  69. CGRect frame = self.table.bounds;
  70. frame.origin.y = -frame.size.height;
  71. self.navigationController.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.17 green:0.09 blue:0.19 alpha:1.0];
  72. [self.navigationController.navigationController.navigationBar setShadowImage: [UIImage new]];
  73. self.navigationController.navigationController.navigationBar.tintColor = [UIColor whiteColor];
  74. self.navigationController.navigationController.navigationBar.translucent = NO;
  75. }
  76. - (void)viewDidAppear:(BOOL)animated {
  77. [super viewDidAppear:animated];
  78. [self.navigationController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
  79. }
  80. - (void)viewWillDisappear:(BOOL)animated {
  81. [super viewWillDisappear:animated];
  82. [self.navigationController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blackColor]}];
  83. }
  84. - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  85. CGFloat offsetY = scrollView.contentOffset.y;
  86. if (offsetY > 200) {
  87. [UIView animateWithDuration:0.2 animations:^{
  88. self.iconView.alpha = 1.0;
  89. self.titleLabel.alpha = 0.0;
  90. }];
  91. } else {
  92. [UIView animateWithDuration:0.2 animations:^{
  93. self.iconView.alpha = 0.0;
  94. self.titleLabel.alpha = 1.0;
  95. }];
  96. }
  97. if (offsetY > 0) offsetY = 0;
  98. self.headerImageView.frame = CGRectMake(0, offsetY, self.headerView.frame.size.width, 200 - offsetY);
  99. }
  100. -(void)respring {
  101. UIAlertController *respring = [UIAlertController alertControllerWithTitle:@"Tick"
  102. message:@"Do you really want to ReSpring?"
  103. preferredStyle:UIAlertControllerStyleAlert];
  104. UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"Confirm" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
  105. [self respringUtil];
  106. }];
  107. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
  108. [respring addAction:confirmAction];
  109. [respring addAction:cancelAction];
  110. [self presentViewController:respring animated:YES completion:nil];
  111. }
  112. -(void)respringUtil {
  113. NSTask *t = [[NSTask alloc] init];
  114. [t setLaunchPath:@"/usr/bin/killall"];
  115. [t setArguments:[NSArray arrayWithObjects:@"backboardd", nil]];
  116. [t launch];
  117. }
  118. -(IBAction)twitterEsquilli {
  119. NSURL *URL = [NSURL URLWithString: @"https://github.com/ShyMemoriees"];
  120. [[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
  121. }
  122. @end