iPhone应用程序 - 白盒动态调整大小,具体取决于内容

时间:2011-07-31 20:26:37

标签: iphone objective-c ios xcode interface-builder

我正在尝试构建我的第一个iPhone应用程序,一个柏林博物馆指南,我在确定如何设计特定视图方面遇到了一些麻烦。之前我用Photoshop做了我所有观点的模型,但现在实际上在Xcode中实现它是其他的东西,当然: - )

所以,这就是我想要的:

[我本来要在这里发布一张图片,但由于我是新手,我没有足够的声誉来张贴图片。]

在此处查找图片: http://img9.uploadhouse.com/fileuploads/13445/13445099d5adea77b02fe1d76755da6b81c92634.png

我想要一个白色的盒子里面有几个文字部分。一个大标题,一个较小的标题和一个放在图像旁边的较长文本。其中的文本由我的核心数据模型提供,并根据用户正在查看的展览进行更改。

第一个问题:是否有“圆角对象的白框”,我可以放置文字,图像等,或者我必须将其作为自定义图像导入?在这种情况下,如果我希望盒子改变它的大小,我就会遇到问题,就像简单地缩放图像一样,圆角会变形。我假设采用顶部和底部的CSS-stye方法 - 图像和使用repeat-y属性或类似的东西做中间部分在objective-c中不起作用,对吗?

第二个问题:对于如何处理文本扩展的事情,有没有人有好的建议?我希望描述文本最初只是一个预告片,所以它不会占用整个屏幕。如果用户想要继续阅读,则在点击“更多”按钮时,该框应该展开并显示整个文本。 这个理论太多了......我对如何完成这项工作有点无能为力,希望有人可能会对此有一些好的意见。

非常感谢您花时间帮助新手: - )

1 个答案:

答案 0 :(得分:2)

我不会使用b / g图像,因为你会注意到垂直扩展会出现问题。我宁愿使用常规UIView和跟随方法来使其角落成为圆角。

#import <QuartzCore/QuartzCore.h>

view.layer.cornerRadius = 5; 

至于文字扩展。我不会尝试使图像包装文本,因为它很难。 对于自动UITextView调整,您可以执行以下操作。

  • 将UITextView框架设置得更小。
  • 创建一个“更多”按钮,它将更改UITextView的框架并为其设置动画

示例:

#define MOVE_ANIMATION_DURATION_SECONDS 0.5

-(void)maximize:(BOOL)animated{
    if(animated){
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:MOVE_ANIMATION_DURATION_SECONDS];
        [UIView setAnimationDelegate:self];

        [self setMaximizedViewState];

        [UIView commitAnimations];
    }else
        [self setMaximizedViewState];

}

-(void)minimize:(BOOL)animated{
    if(animated){
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:MOVE_ANIMATION_DURATION_SECONDS];
        [UIView setAnimationDelegate:self];

        [self setMinimizedViewState];

        [UIView commitAnimations];
    }else
        [self setMinimizedViewState];

}

-(void)setMinimizedViewState{
    isMinimized = YES;

    //Adjust the UITextView's frame and other properties
}

-(void)setMaximizedViewState{
    isMinimized = NO;

    //Adjust the UITextView's frame and other properties
}