2012-07-02 115 views
4

这是我的.m我试图让一个UILabel到一个UIScrollView内滚动,但它不滚动

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.scrollView addSubview:self.contentView]; 
    self.scrollView.contentSize = self.contentView.bounds.size; 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 

    NSMutableArray *arr = [[NSMutableArray alloc]init]; 
    arr = [Singleton getArray]; 

    NSString *str = [arr componentsJoinedByString:@"\n"]; 
    summaryLabel.text = str; 
} 

这是我的.h

@interface TotalViewController : UIViewController 
{ 
    UIScrollView *scrollView; 
    UIView *contentView; 

} 
@property (nonatomic, retain) IBOutlet UIScrollView * scrollView; 
@property (nonatomic, retain) IBOutlet UIView  * contentView; 
@property (nonatomic,strong) IBOutlet UILabel  * summaryLabel; 

我的标签是连接到View Controller,我的contentView连接到View Controller,我的summaryLabel连接到View Controller。我需要标签滚动,而不是。

回答

28

一个非常简单的答案,如果你只是想要一个可滚动的标签,将使用UITextView来代替(reference)。禁用编辑,你会得到一个可滚动的标签。

(来自几乎一字不差:how to add a scroll function to a UILabel),如果它的内容比它的可视面积不大于

+0

哇我不能相信这是多么容易。谢谢。 –

+0

您正在考虑使用UITextView的人们必须意识到这绝对是错误。如果你想滚动,以及设置字体大小/家庭,UITextView可能让你熬夜。 (特别是如果您以编程方式设置文本,而不是故事板)。 另请参阅http://stackoverflow.com/a/19168661/4493512 –

10

的UIScrollView不会滚动。考虑到在设置scrollview的contentSize后将文本分配给标签,这种情况不太可能发生。我会尝试这样的...

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.scrollView addSubview:summaryLabel]; 

    ..... 

    summaryLabel.text = str; 

    // Assuming your label has numberOfLines = 0, and you want to scroll vertical 
    CGSize maxSize = CGSizeMake(summaryLabel.frame.size.width, CGFLOAT_MAX); 
    CGSize labelSize = [summaryLabel sizeThatFits:maxSize]; 
    scrollview.contentSize = labelSize; 
} 
+2

这是更好的答案。 UITextView总是允许选择(可以禁用编辑),只有在UserInteraction被禁用时才能禁用选择。但是,禁用UserInteraction也会禁用TextView的滚动功能。所以,如果你不介意用户能够选择/高亮显示文本(复制,定义等),那么使用TextView可能适合你。如果你不想要任何用户选择,这是更好的答案。 – emdog4

+1

如果你想要选择,那么使用UITextView是“更好的答案”。我会满足的,这两者都不是更好,没有背景。这完全取决于你想要做什么。 –

相关问题