【问题标题】:Scrolling view like app details screen滚动视图,如应用详细信息屏幕
【发布时间】:2009-08-31 01:55:50
【问题描述】:

我正在尝试找出在 AppStore 应用程序中创建应用程序详细信息屏幕等视图的最佳方法。我想要一个缩略图和文本内容,如果内容太长,所有内容都会滚动。这是在表格视图还是滚动视图中完成的?

【问题讨论】:

    标签: objective-c cocoa-touch uitableview uiscrollview


    【解决方案1】:

    我在滚动视图中做了一个。我通过这种方法计算了每个元素的框架的大小:

    - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
    

    我通过在每个标签后添加 y 大小来保持运行总和。最后,如果滚动视图超过一定大小(我的页面长度),我将这个大小赋予滚动视图,并在最后添加一点,这样它就不会撞到底部。

    这里有一些代码:

    int currentYPos;
    CGSize maximumSize = CGSizeMake(300, 9999);
    [scrollView setCanCancelContentTouches:NO];
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault;
    scrollView.clipsToBounds = YES;
    scrollView.scrollEnabled = YES;
    
    scrollView.pagingEnabled = NO;
    
    // set the title frame size
    self.titleLabel.text = self.title;
    
    CGSize titleSize = [self.titleLabel.text sizeWithFont:self.titleLabel.font 
          constrainedToSize:maximumSize 
        lineBreakMode:self.titleLabel.lineBreakMode];
    
    currentYPos = titleSize.height + 20;
    
    CGRect titleFrame = CGRectMake(10, 0, 300, currentYPos);
    self.titleLabel.frame = titleFrame;
    

    请注意,许多 titleLabel 属性是在 IB 中的标签上设置的。

    【讨论】:

    • 那么您构建的视图是在 IB 中完成的,但您使用代码动态调整它的大小?
    • 是的,但那只是因为我是从 IB 开始的,后来才发现如何格式化视图。您可以在 Xcode 中设置自己的标签,唯一的区别是您必须在代码中指定它们的字体和行高等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多