我想像幻灯片放映一样显示 3D 模型。当您单击下一步时,下一个会出现几秒钟的动画……然后是下一个……并且这会随着 UILabel 文本的变化而继续。
PressedNextbtn --->(在 ARSCNView 上)新 3D 模型显示 ---> PressedNextbtn --->(在 ARSCNView 上)新 3D 模型显示 --->
我还想添加一个上一个按钮,这样它也可以返回。如果不清楚,请查看下图以获取更多信息。
所以:
- 从闲置的 3D 模型开始
- 用户点击下一步
- 更改带有固有动画播放的 3d 模型和 laos 更改 UI LABEL
- 每次用户按下 next 时,上面的 3D 模型都会改变
- 还可以在必要时返回到之前的状态。
注意:我已经弄清楚了 UILabel,现在我需要将 3D 模型幻灯片放映到图像中看到的系统上。我希望这能澄清一切。
@IBAction func nextPressed(_ sender: Any) {
displayNext()
//DISPLAYs 来自数组的下一个 3D 模型固有动画
@IBAction func prevPressed(_ sender: Any) {
getPrevious()
//DISPLAY 具有固有动画的先前 3D 模型
func displayNext() {
guard currentIndex < myArray.count else {
// timer.invalidate() //if you don't want to repeat showing the images you can invalidate the timer.
currentIndex = 0 // add this if you want to repeat showing the image
return
}
allArray.append(myArray[currentIndex])
sildeText.text = myArray[currentIndex]
currentIndex += 1
}
func getPrevious() {
if allArray.count > 1 {
allArray.removeLast()
sildeText.text = allArray.last
}
else {
sildeText.text = allArray.last
}
}
请检查应用程序结构..3D 模型尚未正确定位。
最佳答案
有两种选择可以实现这种行为,
- 添加
UIPageviewController
并在内容中添加您的 UILabel 和 3D 模型,并在单击“下一步”或“上一步”按钮时更改页面索引。 - 使用 Horizontal
UIScrollView
并在单击“Next”或“Previous”按钮时更改框架以及 UILabel 和 3D 模型。
我更喜欢使用 UIPageviewController
,
在 ViewController.m 中,
导入“ViewController.h”
@interface ViewController () <UIPageViewControllerDataSource, UIPageViewControllerDelegate>
@property (nonatomic,strong) UIPageViewController *PageViewController;
@property (nonatomic, strong) NSArray *arrPageTitles;
@property (nonatomic, strong) NSArray *arrPageDescription;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Create page view controller
self.PageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.PageViewController.dataSource = self;
self.PageViewController.delegate = self;
self.shouldShowPageController = YES;
[self addChildViewController:PageViewController];
[self.view addSubview:PageViewController.view];
[self.PageViewController didMoveToParentViewController:self];
}
#pragma mark - Page View Datasource Methods
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
NSUInteger index = ((PageContentVC *) viewController).pageIndex;
if (index == NSNotFound) {
return nil;
}
if (index == 0) {
return [self viewControllerAtIndex:([self.arrPageTitles count] - 1)];
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
NSUInteger index = ((PageContentVC *) viewController).pageIndex;
if (index == NSNotFound){
return nil;
}
index++;
if (index == [self.arrPageTitles count]){
return [self viewControllerAtIndex:0];
}
return [self viewControllerAtIndex:index];
}
#pragma mark - PageContent View Controller Method
- (PageContentVC *)viewControllerAtIndex:(NSUInteger)index{
if (([self.arrPageTitles count] == 0) || (index >= [self.arrPageTitles count])) {
return nil;
}
// Create a new view controller and pass suitable data.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"PageContentVC" bundle:[NSBundle mainBundle]];
PageContentVC *pageContentViewController = [storyboard instantiateViewControllerWithIdentifier:@"PageContent"];
pageContentViewController.title = self.arrPageImages[index];
pageContentViewController.description = self.arrPageTitles[index];
pageContentViewController.pageIndex = index;
return pageContentViewController;
}
@end
这里,PageContentVC 是 UIPageviewController
中的内容 View Controller
关于IOS/ARKIT - 如何做上一个和下一个按钮,点击时用动画改变 3D 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579637/