一、iOS12版本 使用reloadRowsAtIndexPaths方法 刷新cell 界面抖动/跳动 解决方法: __strong typeof(self) strongSelf = self; [UIView performWithoutAnimation:^{ CGPoint loc = self.tableView.contentOffset; [self.tableView reloadRowsAtIndexPaths:@[self.indexPath] withRowAnimation:UITableViewRowAnimationFade]; strongSelf.tableView.contentOffset = loc; }]; 二、A界面跳转到B界面,操作后返回A界面刷新单个组件(view,cell) 解决方案:在B界面重写返回按钮事件: – (void)backBtnClicked{ [self.view endEditing:YES]; [NSObject cancelPreviousPerformRequestsWithTarget:self]; UIViewController *ctl = self.navigationController.viewControllers[self.navigationController.viewControllers.count – 2]; if ([ctl isKindOfClass:[QAListViewController class]]) { QAListViewController *QAVC = (QAListViewController *)ctl; QAVC.questionID = self.questionID; QAVC.is_upate = YES; self.answerModel.like_type = [NSString stringWithFormat:@"%ld", (long)self.answerModel.good_bad]; QAVC.answerModel = self.answerModel; [self.navigationController popToViewController:QAVC animated:YES]; }else{ [self.navigationController popViewControllerAnimated:YES]; } } 在A界面定义变量:是否需要更新is_update,以及更新的内容在A界面的生命周期viewWillAppear中判断: – (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; if (self.is_upate) { [self.newsDataArray replaceObjectAtIndex:self.cellIndexPath.row withObject:self.answerModel]; __strong typeof(self) strongSelf = self; [UIView performWithoutAnimation:^{ CGPoint loc = self.tableView.contentOffset; [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:self.cellIndexPath,nil] withRowAnimation:UITableViewRowAnimationFade]; strongSelf.tableView.contentOffset = loc; }]; self.is_upate …
一、xcode11 新建swift5 项目 参考Xcode11新建低版本iOS,swift项目流程及问题 二、接入 SDK 在项目目录下执行 $ pod init 在 Podfile 中指定: pod ‘PolyvVodSDK’ pod ‘PLVVodDanmu’ pod ‘PLVSubtitle’ pod ‘FDStackView’ pod ‘Masonry’ pod ‘YYWebImage’ 在项目目录终端下执行: $ pod install 三、将播放器空间和皮肤等资源引入到项目 复制PolyvOpenSourceModule文件夹到你的项目 复制PLVNetworkUtil.h和PLVNetworkUtil.m文件到新项目 四、新建OC文件和桥接文件,点播初始化 点播初始化: 在OC文件中添加方法 polyvInit PLVDemo.h文件中添加 -(void)polyvInit; PLVDemo.m文件中添加 /** 初始化保利威视 */ -(void)polyvInit{ NSError *error = nil; PLVVodSettings *settings = [PLVVodSettings settingsWithConfigString:@"yQRmgnzPyCUYDx6weXRATIN8gkp7BYGAl3ATjE/jHZunrULx8CoKa1WGMjfHftVChhIQlCA9bFeDDX+ThiuBHLjsNRjotqxhiz97ZjYaCQH/MhUrbEURv58317PwPuGEf3rbLVPOa4c9jliBcO+22A==" key:@"VXtlHmwfS2oYm0CZ" iv:@"2u9gDPKdX6GyQJKU" error:&error]; // 读取并替换设置项。出于安全考虑,不建议从 plist 读取加密串,直接在代码中写入加密串更为安全。 { NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; BOOL enableUserVodKey = [user boolForKey:PLVApplySettingKey]; if (enableUserVodKey) { NSString *userVodKey = [user stringForKey:PLVVodKeySettingKey]; userVodKey = [userVodKey stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (userVodKey.length) { settings = [PLVVodSettings settingsWithConfigString:userVodKey error:&error]; } } } NSLog(@"settings: %@", settings); if (error) { …
一、新建一个工程 User interface:选择Storyboard,因为SwiftUI只支持iOS13 二、修改deployment target 三、删除文件 删除SceneDelegate.swift 官方文档: In iOS 13 and later, use UISceneDelegate objects to respond to life-cycle events in a scene- based app. 这个场景呢,如果不使用ipad的多窗口就不建议使用 删除 Main.storyboard 不使用storyboard布局,打开info.plist,删除Main storyboard file base name和Application Scene Manifest选项。 3.删除 AppDelegate.swift文件中的下面2个方法函数 4.添加rootViewController 在AppDelegate.swift第一个方法中添加: let screen = UIScreen.main.bounds //获得设备尺寸 self.window = UIWindow.init(frame: screen) //给“输出窗口“实例化并设置frame let viewController = ViewController() //实例化一个ViewController let navigationController = UINavigationController(rootViewController: viewController) //为ViewController设置一个导航栏 self.window?.rootViewController = navigationController//将“输出窗口”的根视图设置为导航栏 self.window?.makeKeyAndVisible() // 设置"输出窗口可见" 5.在ViewController.swift中添加测试代码 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. view.backgroundColor = UIColor.red } 四、效果如下
问题: :-1: Multiple commands produce ‘/Users/reanod/Library/Developer/Xcode/DerivedData/xxx-exvvnirkstuupfhewuknphwuveko/Build/Products/Debug-iphonesimulator/xxx.app/gold@3x.png’: 出错原因: 在xcode开发中,添加文件等资源使用的Create groups1.使用Create groups 当你选择了这个选项时,如果你想要引入的文件不在你的项目文件的目录下,Xcode则会自动将这个文件复制一份拷贝到你的项目的目录下 如果你不选择,并且这个文件也并不在你的项目目录下,那么这个文件仍然可以被使用,但是一旦你将项目拷贝到了别的地方时,这个文件就会找不到了。因为这个文件在你的电脑中,而不在你的项目中。 2.使用Create folder references方法 只是将文件单纯的创建了引用,这些文件不会被编译,所以在使用的时候需要加入其路径,比如在我们想要使用上图中的myScripts文件夹下面有某个头文件,则需要按照下面的方法添加声明: include myScripts/xxx.h 否则编译器就会告诉你找不到xxx.h文件。这就是项目中黄色文件夹与蓝色文件夹的区别以及使用方法所以:不建议❌使用【Create folder references】 3.建议使用如下方式添加资源 解决方法: 1.删除原来的资源2.重新添加资源