将UIScroll和UIPageControl从目标C转换为swift

将UIScroll和UIPageControl从目标C转换为swift,swift,uiscrollview,uipagecontrol,Swift,Uiscrollview,Uipagecontrol,你会如何用swift写这封信?我在翻译这篇文章时遇到了麻烦,因为swift是我的第一语言,而这篇文章都是用C语言写的 UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.hei

你会如何用swift写这封信?我在翻译这篇文章时遇到了麻烦,因为swift是我的第一语言,而这篇文章都是用C语言写的

UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height);
    scrollView.delegate = self;

    UIPageControl * pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 90, scrollView.frame.size.width, 20)];
    pageControl.numberOfPages = scrollView.contentSize.width/scrollView.frame.size.width;
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

Then you need to add the following two methods:

- (IBAction)changePage:(id)sender {
    CGFloat x = pageControl.currentPage * scrollView.frame.size.width;
    [scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}

-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView  {
    NSInteger pageNumber = roundf(scrollView.contentOffset.x / (scrollView.frame.size.width));
    pageControl.currentPage = pageNumber;

首先,我强烈建议您阅读有关Swift和Objective-C互操作性的参考资料。有关更多详细信息,请参阅

斯威夫特是一种有自己习惯用语的语言。Objective-C代码可以以多种方式翻译成它们。例如,在Objective-C中处理对象时必须使用指针,这隐式地使
nil
引用成为可能。Swift使用可选类型来表示,因此可以根据上下文将
UIScrollView*scrollView
转换为
let-scrollView:UIScrollView
let-scrollView:UIScrollView?

当然,这只是冰山一角。翻译过程中可能发生的变化取决于上下文,因此在开始迁移代码之前,最好先学习和理解基本的Swift

好的,既然我们现在清楚了,下面是翻译:

let scrollView = UIScrollView(frame: CGRectMake(0, 0, 100, 100))
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height)
scrollView.delegate = self
let pageControl = UIPageControl(frame:CGRectMake(0, 90, scrollView.frame.size.width, 20))
pageControl.numberOfPages = Int(scrollView.contentSize.width / scrollView.frame.size.width)
pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged)


func changePage(sender: AnyObject) -> () {
    let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width
    scrollView.setContentOffset(CGPointMake(x, 0), animated: true)
}

func scrollViewDidEndDecelerating(scrollView: UIScrollView) -> () {
    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width);
    pageControl.currentPage = Int(pageNumber)
}

首先,我强烈建议您阅读有关Swift和Objective-C互操作性的参考资料。有关更多详细信息,请参阅

斯威夫特是一种有自己习惯用语的语言。Objective-C代码可以以多种方式翻译成它们。例如,在Objective-C中处理对象时必须使用指针,这隐式地使
nil
引用成为可能。Swift使用可选类型来表示,因此可以根据上下文将
UIScrollView*scrollView
转换为
let-scrollView:UIScrollView
let-scrollView:UIScrollView?

当然,这只是冰山一角。翻译过程中可能发生的变化取决于上下文,因此在开始迁移代码之前,最好先学习和理解基本的Swift

好的,既然我们现在清楚了,下面是翻译:

let scrollView = UIScrollView(frame: CGRectMake(0, 0, 100, 100))
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height)
scrollView.delegate = self
let pageControl = UIPageControl(frame:CGRectMake(0, 90, scrollView.frame.size.width, 20))
pageControl.numberOfPages = Int(scrollView.contentSize.width / scrollView.frame.size.width)
pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged)


func changePage(sender: AnyObject) -> () {
    let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width
    scrollView.setContentOffset(CGPointMake(x, 0), animated: true)
}

func scrollViewDidEndDecelerating(scrollView: UIScrollView) -> () {
    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width);
    pageControl.currentPage = Int(pageNumber)
}

你对斯威夫特了解多少?你在哪些部分上苦苦挣扎?我知道我想将UIScrollView连接到我的PageController,这有我需要的资源,但调用PageController的函数时出错。例如,假设我有func changePage(发送者:UIPageControl){pageControl.currentPage-有一个错误,指出没有可用的pageControl.currentPage}您对swift了解多少?你在哪些部分上苦苦挣扎?我知道我想将UIScrollView连接到我的PageController,这有我需要的资源,但调用PageController的函数时出错。例如,假设我有func changePage(发送者:UIPageControl){pageControl.currentPage-有一个错误,指出没有可用的pageControl.currentPage}