Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何制作Spotify这样的菜单_Ios - Fatal编程技术网

Ios 如何制作Spotify这样的菜单

Ios 如何制作Spotify这样的菜单,ios,Ios,好的,正如问题所暗示的,我想制作一个类似spotify应用程序目前所拥有的菜单。 我在中遇到过类似的代码,但我想知道如何在DIY(自己动手)级别上实现这一点 我能理解需要一个页面浏览控制器,但我丢了。请给我指一下正确的方向 编辑 为了让人们正确理解我所说的需求,这里有一个png 请注意,顶部的菜单以下划线作为选定菜单进行滑动 我发布的github链接是一个实现这一点的库,但它是swift,所以有人能告诉我如何在objective c中实现这一点吗 关于我制作了一个类似的示例,但它是在Swift

好的,正如问题所暗示的,我想制作一个类似spotify应用程序目前所拥有的菜单。 我在中遇到过类似的代码,但我想知道如何在DIY(自己动手)级别上实现这一点

我能理解需要一个页面浏览控制器,但我丢了。请给我指一下正确的方向

编辑 为了让人们正确理解我所说的需求,这里有一个png

请注意,顶部的菜单以下划线作为选定菜单进行滑动

我发布的github链接是一个实现这一点的库,但它是swift,所以有人能告诉我如何在objective c中实现这一点吗


关于

我制作了一个类似的示例,但它是在Swift 2.0中。看一看。也许这会有所帮助

在下面发布的示例链接中,您询问的查询可以通过以下方式完成。
我们可以使用此方法首先在页面视图顶部设置按钮

按照您的说法,这是顶部菜单

func setupSegmentButtons(){
    navigationView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, (self.navigationController?.navigationBar.frame.size.height)! - 4))
    //navigationView.backgroundColor = UIColor.redColor()
    navigationView.layoutIfNeeded()
    let numControllers:NSInteger = viewControllerArray.count
    if(buttonText == nil)
    {
        buttonText = NSArray(objects: "First","Second","Third")
    }

    let buttonWidth:CGFloat = self.view.frame.size.width/CGFloat(numControllers)
    for (var i = 0; i < numControllers; i++) {


        let button:UIButton = UIButton(frame: CGRectMake( CGFloat(i) * buttonWidth, 0, buttonWidth, 40))
        button.addTarget(self, action: "tapSegmentButtonAction:", forControlEvents: .TouchUpInside)
        navigationView.addSubview(button)
        button.tag = i
        button.titleLabel?.font = UIFont(name: "Helvetica", size: 14)
        button.setTitleColor(UIColor.blackColor(), forState: .Normal)
        button.setTitle(buttonText.objectAtIndex(i) as? String, forState: .Normal)

    }

    self.view.addSubview(navigationView)
    self.setupSelector()
}

现在,我们可以使用滚动视图的scrollViewDidScroll委托,使选择栏视图向所选菜单滑动。每当滚动页面视图控制器时调用此委托时,我们都会随时更改所选条形图的框架

func scrollViewDidScroll(scrollView: UIScrollView) {

    let xFromCenter : CGFloat = self.view.frame.size.width-scrollView.contentOffset.x;

    let xCoors : CGFloat = X_BUFFER + selectionBar.frame.size.width * CGFloat(currentPageIndex) - X_OFFSET
    _ = selectionBar.frame

    if(CGFloat(xCoors)-xFromCenter / CGFloat(viewControllerArray.count) > self.view.frame.size.width - selectionBar.frame.width)
    {
        selectionBar.frame = CGRectMake(self.view.frame.size.width - selectionBar.frame.width, selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
    else if(CGFloat(xCoors)-xFromCenter / CGFloat(viewControllerArray.count) < 0)
    {
        selectionBar.frame = CGRectMake(0, selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
    else
    {
       selectionBar.frame = CGRectMake(CGFloat(xCoors)-xFromCenter/CGFloat(viewControllerArray.count), selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
}
func scrollViewDidScroll(scrollView:UIScrollView){
让xFromCenter:CGFloat=self.view.frame.size.width scrollView.contentOffset.x;
设xCoors:CGFloat=X_缓冲区+selectionBar.frame.size.width*CGFloat(currentPageIndex)-X_偏移量
_=selectionBar.frame
if(cgloat(xCoors)-xFromCenter/cgloat(viewControllerArray.count)>self.view.frame.size.width-selectionBar.frame.width)
{
selectionBar.frame=CGRectMake(self.view.frame.size.width-selectionBar.frame.width,selectionBar.frame.origin.y,selectionBar.frame.size.width,selectionBar.frame.size.height);
}
else if(cgloat(xCoors)-xFromCenter/cgloat(viewControllerArray.count)<0)
{
selectionBar.frame=CGRectMake(0,selectionBar.frame.origin.y,selectionBar.frame.size.width,selectionBar.frame.size.height);
}
其他的
{
selectionBar.frame=CGRectMake(cgloat(xCoors)-xFromCenter/cgloat(viewControllerArray.count),selectionBar.frame.origin.y,selectionBar.frame.size.width,selectionBar.frame.size.height);
}
}

有关更多详细信息,请参见下面的示例链接


查看本教程请在评论之前阅读问题,我不想要幻灯片,我想要像sportify一样的顶部菜单。只需查看一些pageviewcontroller教程。抱歉,我误解了您的问题我知道如何实现页面视图控制器,但问题是维护活动菜单和下划线@RajanMaheshwari@KevinGuan我已经更新了答案,包括了问题作者所问的链接中的重要部分。谢谢,现在看起来很棒;)
func scrollViewDidScroll(scrollView: UIScrollView) {

    let xFromCenter : CGFloat = self.view.frame.size.width-scrollView.contentOffset.x;

    let xCoors : CGFloat = X_BUFFER + selectionBar.frame.size.width * CGFloat(currentPageIndex) - X_OFFSET
    _ = selectionBar.frame

    if(CGFloat(xCoors)-xFromCenter / CGFloat(viewControllerArray.count) > self.view.frame.size.width - selectionBar.frame.width)
    {
        selectionBar.frame = CGRectMake(self.view.frame.size.width - selectionBar.frame.width, selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
    else if(CGFloat(xCoors)-xFromCenter / CGFloat(viewControllerArray.count) < 0)
    {
        selectionBar.frame = CGRectMake(0, selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
    else
    {
       selectionBar.frame = CGRectMake(CGFloat(xCoors)-xFromCenter/CGFloat(viewControllerArray.count), selectionBar.frame.origin.y, selectionBar.frame.size.width, selectionBar.frame.size.height);
    }
}