我有一个项目(由其他人编写),其中有一个内容和文本显示在表视图中的提要.每个帖子对应于表格视图中的一个部分,每个部分都有自己的行,对应于内容,文本,按钮等元素.
我需要在表格视图单元格中使用"更多"按钮显示帖子标题的短标签,当点击更多按钮时,标签将扩展到标题适合的任何大小,所有这些都发生在表格视图单元格内.当点击更多按钮时,我将标签的numberOfLines属性更改为零,并且由于单元格具有自动高度,我所需要的只是重新加载特定的标题单元格.(如果我numberOfLines在显示单元格之前在第一个位置设置为0,则单元格会以扩展的大小正确显示.)
我试过了:
[tableView beginUpdates];
tableView endUpdates];
我尝试了各种动画选项:
[tableView reloadRowsAtIndexPaths:@[myPath] withRowAnimation:UITableViewRowAnimation(Bottom,Top,None etc)];
我试过了:
[tableView reloadSections:[NSIndexSet indexSetWithIndex:myPath.section] withRowAnimation:UITableViewRowAnimation(Top,Bottom,None etc)];
但它们都产生相同的结果:整个表视图布局搞砸了:它跳转到另一个单元格,一些视图变为空白,单元格相互重叠,单元格内的视频停止播放,标签不会扩展(但内部刷新)本身,例如,一行的短预览txt从顶部/底部等动画,但不会展开).
什么可能导致整个表视图的混乱,以及如何正确地重新加载一个单元格和扩展动画,而不会弄乱整个布局?我已经看到了很多关于此的问题和答案,但他们都推荐了我已经尝试过并在上面解释过的选项.
我的应用程序面向iOS 8.0+
更新:这是相关代码(有关内部工作的一些部分与布局无关,已删除):
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier: MyCellIdentifier forIndexPath:indexPath];
cell.delegate = self;
cell.indexPathToReloadOnAnimation = indexPath;
cell.shouldShortenCaption = YES;
id post = self.posts[indexPath.section] ;
[cell setPost:post];
return cell;
Run Code Online (Sandbox Code Playgroud)
内部setPost::
if(self.shouldShortenCaption){
captionLabel.numberOfLines = 2;
}else{
captionLabel.numberOfLines = 0;
}
NSString *text = [some calculated (deterministic) text from post object];
Run Code Online (Sandbox Code Playgroud)
按钮动作很简单:
self.shouldShortenCaption = NO; …Run Code Online (Sandbox Code Playgroud) 我正在使用框架目标(为了更好的代码重用和 IB_Designables),并且我已经有了一个完美运行的框架目标。我也决定将其他一些类移至框架目标。
我已经设置了 pods(在这种情况下只有一个),但是每当我尝试包含 pod 时,我都会收到 not found 错误。
如果我也尝试使用模块方法,则没有变化:
问题是我也已经有了另一个框架,具有相同的设置(交叉检查所有编译器设置/链接器标志/构建阶段等),并且该框架在导入其 pod 时没有问题。
这是我的 podfile(TUComponents正在处理,TUModels是失败的):
[...]
target 'TUComponents' do
pod 'AHKNavigationController'
pod 'TTTAttributedLabel'
use_frameworks!
end
target 'TUModels' do
pod 'JSONModel'
use_frameworks!
end
Run Code Online (Sandbox Code Playgroud)
更奇怪的是;Xcode 在代码完成导入JSONModel/JSONModel.h标头(或JSONModel在模块 @import 的情况下)没有问题。但是当我尝试编译时,它失败了。
我的配置可能有什么问题?
更新:如果我放弃在 pod 中使用框架并使用常规的旧静态库,并将框架中的允许非模块化包含设置为是,我可以构建。但是我不知道为什么我在使用 Pod 框架时无法构建。
我正在尝试在我的应用程序扩展中获取最大 1080x1080 像素的调整大小图像:
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *provider = item.attachments.firstObject;
id imageOptions = @{
NSItemProviderPreferredImageSizeKey: [NSValue valueWithCGSize:CGSizeMake(1080, 1080)]
};
if([provider hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage]){
[provider loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:imageOptions completionHandler:^(id<NSSecureCoding> _Nullable item, NSError * _Null_unspecified error) {
if(error){
NSLog(@"An error occured.");
[self.extensionContext completeRequestReturningItems:nil completionHandler:nil];
}else{
NSURL *url = (NSURL*)item;
UIImage *result = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
//RESULT IS FULL SIZE HERE: 3024x4032
}
}];
}
Run Code Online (Sandbox Code Playgroud)
然而,结果图像是3024x4032。我究竟做错了什么?
ios-app-extension ios8-share-extension share-extension ios11
我在Interface Builder中设计一个视图控制器,并具有一个堆栈视图。在执行任何操作(例如,稍微移动任何对象或将约束更改1px)之后,整个堆栈视图将水平折叠,从而弄乱了所有布局。然后,当我执行任何其他操作(例如,更改另一个约束,甚至相同的约束都没关系)时,它将恢复为原始的正确布局。
这是正确布局的屏幕截图:
在实际上进行任何更改之后,这是相同的视图:
当我再次更改任何内容时,它会固定(返回正确的布局),而当我更改其他内容时,它会再次混乱,直到永远。检查器中没有任何自动布局问题。同样,在开始出现此问题之后,我将所有视图的拥抱和抗压缩性约束设置为1000,但无济于事。是什么原因造成的?我正在使用Xcode 9.2。
我有一个自定义类TULabel,它从UILabel我的自定义框架中的常规派生而来(这是我的应用程序同一个项目中的另一个目标)。我已经在 Interface Builder 中使用了我的自定义类几个月没有问题:我选择了一个标签,转到自定义类,开始输入我的自定义类名称,甚至它自己完成了。
我已经在这个项目上工作了很长时间,今天我意识到我不能再输入TULabel自定义类框了。我几乎可以输入任何内容,甚至是不存在的类。但是当我尝试输入TULabel(或我框架中的任何其他自定义类)时,它只会恢复到以前的值:
我使用自定义类的唯一方法是打开 Nib/Storyboard 作为源代码,并在那里键入我的自定义类,这显然是不可接受的。奇怪的是,当我运行我的应用程序时,它会正确构建并运行,其中带有自定义标签(并且我确定它是实际的自定义类实例,而不是运行时忽略我的自定义类并恢复到标签,因为它具有自定义绘图行为被陈列)
我不知道它何时何地崩溃,因为我已经在这个项目上工作了很长时间并且几个星期没有尝试添加自定义类。
我试过打开和关闭 Xcode,清理我的项目和派生数据文件夹,重建项目但无济于事。它仍然是一样的。
为什么 Interface Builder 明确禁止我的类,以及如何让 Interface Builder 再次接受我的自定义类名?
我在 Xcode 9.2 上。
我有一个聊天应用程序,我使用倒置表视图技术(表视图使用转换缩放到(1,-1),并且所有单元格本身也缩放到(1,-1),中和效果,从而有效地反转表视图以显示底部的"第一个"单元格,从底部"开始"表格视图.一切都很好,除了我需要实现偷看和弹出手势.我已将表格视图单元格中的一个按钮连接到目标视图控制器,并启用了peek和pop,如下所示:
手势有效,但是当我3D触摸部分并保持足够突出被触摸的项目(但不弹出预览视图控制器)时,我得到倒置视图:
如何在仍使用倒置表视图的同时使用正确的变换弹出视图?
我正在使用常规设计器设计一个活动,并且我想使用设计器将新的活动拖放ImageView到布局中(我知道如何在 XML 中执行此操作)。但是,如果不选择源图像,我就无法单击“确定”,我不会选择源图像,因为我将在代码中加载远程图像:
当然,我可以选择一个随机可绘制对象,然后在创建后将其删除,或者我可以仅在 XML 中创建它。我想知道为什么 Android Studio 强迫我选择一个可绘制的。我错过了什么,还是只是糟糕的用户体验?
我已经升级到Xcode 10,并且意识到#import语句中的文件名补全不能正常工作。这是我项目的一小部分:
当我尝试完成文件名时,会发生以下情况:
我重新启动了Mac,清理了构建文件夹,完成了所有常见的“修复”,尽管没有任何变化。
手动键入文件名时,不会出现任何错误,所有内容均可正确编译,并且代码补全也可以正常工作。
可能是什么问题?有什么我可以做的,还是Xcode 10本质上是坏的?
更新:我在Xcode 10.1上,它仍然坏了。
我在Vscode 1.33.1,Node 11.12,Typescript 3.4.3,vscode-chrome-debug-core 6.7.46上,我正在尝试调试React Native项目。
只要我不打await,一切都会正常进行。但是,当我点击包含的行时,await在该await行之后(包括该await行),我不会遇到任何断点。代码正常运行,但是调试器陷入混乱。如果我在该await行之前放置一个断点并尝试进入/移出/跳出,它会跳入难看的index.bundle代码。
这发生在我的应用程序中的多个位置,因此也不是孤立的情况。
这是我在中的活动配置launch.json:
{
"name": "Debug iOS (sim)",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "launch",
"platform": "ios",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react",
"smartStep": true,
"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js",
"${workspaceFolder}/lib/**/*.js",
"<node_internals>/**/*.js"
]
},
Run Code Online (Sandbox Code Playgroud)
从配置中可以看出,我已经尝试过smartStep(无论如何都不允许使用该代码。)skipFiles(除非我明确介入,否则它确实会跳过文件,因此它可以工作,但不能解决问题)。我还看到了使用Typescript + VSCode调试Node.js异步/等待,但是我已经尝试过smartStep了,对该问题的关注已经很久了,许多版本已经解决了。
如何调试包含await正确的Typescript代码?
更新:当我绕过Vscode调试/配置并在Chrome和Vanilla终端(例如react-native run-ios)中调试时,它可以完美运行。因此,这与Vscode或其配置有关。
更新2:我的目标是ES2017,这是我的tsconfig:
{
"compilerOptions": {
"target": "es2017",
"module": …Run Code Online (Sandbox Code Playgroud) node.js async-await typescript react-native visual-studio-code
我正在从我的应用程序中使用createStackNavigator内部。我想在屏幕上显示标题。在React Navigation的教程之后,我已经以这种方式实现了它:createBottomTabNavigatorreact-navigation
createBottomTabNavigator(
{
Home: createStackNavigator(
{screen: HomePage, navigationOptions: () => { title: 'Home'}}),
...
},
Run Code Online (Sandbox Code Playgroud)
但是,导航栏中没有任何显示。我也尝试过,headerTitle但无济于事。
我究竟做错了什么?
ios ×4
xcode ×4
objective-c ×2
react-native ×2
uitableview ×2
3dtouch ×1
async-await ×1
cocoapods ×1
ios11 ×1
ios9 ×1
node.js ×1
peek-pop ×1
storyboard ×1
typescript ×1
uistackview ×1
uitableviewautomaticdimension ×1
xcode10 ×1
xcode10.1 ×1
xcode8 ×1
xcode9 ×1
xib ×1