我很难在详细 View 上实现简单的滚动。
该应用程序非常简单,具有主视图和详细 View 。
当用户点击“Master”上的某个项目时,“详细信息” View 会推送更大的照片、博客文本等。
我希望整个详细信息 View 能够滚动,因此如果图片很高或文本很长,他们可以垂直滚动以查看/阅读更多内容。我不希望用户单独滚动这些项目。感觉应该像网页滚动。
目前我的详细信息 View 加载正常,但我无法使其滚动。
我的DetailViewController.h
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController {
IBOutlet UILabel *postTextLabel; // wired to Text Label
IBOutlet UILabel *postAuthorNameLabel; // wired to Author Label
}
@property (strong, nonatomic) id detailItem;
@end
我的DetailViewController.m
#import "DetailViewController.h"
@interface DetailViewController ()
- (void)configureView;
@end
@implementation DetailViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
}
- (void)configureView
{
if (self.detailItem) {
NSDictionary *post = self.detailItem;
NSString *postText = [post objectForKey:@"post_text"];
NSString *postAuthorName = [post objectForKey:@"post_author_name"];
postTextLabel.text = postText;
postAuthorNameLabel.text = postAuthorName;
}
}
@end
IB 结构:
对于要完成这项工作还缺少什么,您有什么想法吗?
最佳答案
我会执行以下操作:
1)(可选)将 View 拖到侧面的 scruture 列表中的 View 中,将其转换为 ScrollView 。
2)将scrollView链接到你的viewcontroller.h并建立一个像这样的Outlet连接
@property (strong, nonatomic) IBOutlet UIScrollView *scroller;
(如果手动添加,请确保在 .m 中添加 @synthesize) 并确保它已在 IB 中连接!
3)在viewDidLoad方法中设置scrollview的contentsize
scroller.contentSize = CGSizeMake(320,550);
注意:IBOutlet UILabel *postTextLabel;实际上应该是一个 UITextView,这样你就可以访问 ContentSize 这将允许以下内容。
CGRect frame = postTextLabel.frame;
frame.size = postTextLabel.contentSize;
postTextLabel.frame = frame;
scroller.contentSize = CGSizeMake(320, frame.size.height+200);//200 or how ever much space is above the textView
再说一次,只有当你使用 UITextView 时才有效
对于 ipad,将 320 替换为 768 或 1024,或根据方向而定
在IB中连接它的最佳方法是按住control并拖动到.h文件 并确保将其设置为自动,如图所示,并指向> View 的.h。 像这样添加它也会自动为您添加@synthesize。
确保我们的 ScrollView 在此处选中 UserInteractionsEnabled
关于objective-c - 无法在iOS中实现简单的 View 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663577/