gpt4 book ai didi

ios - UITableView Header Override (UIView) 滚动行为异常

转载 作者:行者123 更新时间:2023-11-28 22:42:43 25 4
gpt4 key购买 nike

我用一个通用的 UIView 覆盖了(这是一个真实的词吗?无论如何)我的 UITableView header 以在整个应用程序中使用。没什么大不了的,只是纯色背景、预选字体、字体大小、字体粗细、字体颜色等。这就是全部。事实上这里是 UIView

TableSectionView.h

#import <UIKit/UIKit.h>

@interface TableSectionView : UIView {
NSString *textLabel;
UIColor *textColor;
UIColor *backgroundColor;
BOOL bold;
NSString *textFont;
NSInteger textSize;
}


@property (nonatomic, retain) NSString *textLabel, *textFont;
@property (nonatomic, retain) UIColor *textColor, *backgroundColor;
@property (nonatomic) BOOL bold;
@property (nonatomic) NSInteger textSize;

- (id)initWithFrame:(CGRect)frame andText:(NSString*)text;

@end

TableSectionView.m

#import "TableSectionView.h"

@implementation TableSectionView

@synthesize textLabel, backgroundColor, textColor, bold, textFont, textSize;

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}

-(id)initWithFrame:(CGRect)frame andText:(NSString *)text {

self = [self initWithFrame:frame];
if(self) {

textLabel = text;
textFont = @"Arial-BoldMT";
textSize = 16;
textColor = [[UIColor alloc] initWithRed:1 green:1 blue:1 alpha:1];
backgroundColor = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:0.8];

}
return self;

}

-(void)layoutSubviews {
[super layoutSubviews];

UILabel *title = [[UILabel alloc] initWithFrame:self.frame];

title.text = [NSString stringWithFormat:@" %@", textLabel];
title.font = [UIFont fontWithName:textFont size:textSize];
title.textColor = textColor;
title.backgroundColor = backgroundColor;

[self addSubview:title];

}

@end

以及我如何在文件中使用它:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return [[TableSectionView alloc] initWithFrame:CGRectZero andText:@"Table Section Title"];
}

这里没有什么奇怪或独特的。

这很有效,它显示得很好没有问题。当您滚动表格 View 时会发生什么。当您向上滚动时,部分标题向下移动并停留在那里。速度越快,部分标题向下移动的越多并停留在那里,直到您回到表格的顶部。这个应用程序有大约 25 个单独的 TableView ,这个标题将被分开,我真的想尽快解决这个渲染错误。

我想张贴截图,但由于严格的保密协议(protocol),我不能这样做,否则有被解雇的风险。但这里有一些东西可以形象化问题。我模糊了所有的文字,抱歉我别无选择:\

enter image description here

黑色条是节标题,图像的顶部是 UITableView 的顶部。请注意该部分标题向下的程度,而不是它应该在的位置? (顶部,就像普通的节标题一样)。我只是不确定在这里做什么

最佳答案

我认为你的问题出在这里:

-(void)layoutSubviews {
[super layoutSubviews];

UILabel *title = [[UILabel alloc] initWithFrame:self.frame];

title.text = [NSString stringWithFormat:@" %@", textLabel];
title.font = [UIFont fontWithName:textFont size:textSize];
title.textColor = textColor;
title.backgroundColor = backgroundColor;

[self addSubview:title];

}

在 layoutSubviews 中添加 subview 很奇怪。为什么不在initWithFrame中做,以免混淆Cocoa的渲染代码?

编辑:这也使您无需保存所有这些成员变量、声明所有这些属性并合成它们:)

编辑 2:当您初始化 UILabel 时,您也应该使用 self.bounds 而不是 self.frame 作为引用。

关于ios - UITableView Header Override (UIView) 滚动行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com