gpt4 book ai didi

UIView 中的 iOS UIScrollView

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:48 25 4
gpt4 key购买 nike

我有一个有点具体的问题。对于大多数人来说这可能无关紧要,但我不得不处理它并且我必须解决下面描述的问题。我尝试使用 Google 和 Apple SDK 文档查找有关它的一些信息,但没有成功。

我正在设计一个屏幕,其中有许多水平滚动的图像。有三个三个相同的卷轴。每个卷轴都有标题。我已经实现了派生自 UIView 的自定义类,并将 UIScrollView 用于滚动,将 UILabel 用于标题文本:

@interface MyView : UIView {
UIScrollView *iScrollView;
UIView *iTitleView;
}

然后我将此类的对象放在 UIViewController 的 View 中:

@implementation MyViewController

- (void) viewDidLoad {
[super viewDidLoad];
...
iScrollViewTop = [[MyView alloc] init];
[self.view addSubview:iScrollViewTop];
...
}

@end

当我用图像填充内部 ScrollView 并运行我的应用程序时,它看起来不错。但是有一些奇怪的行为。首先,滚动没有弹跳,就像我设置的一样

iScrollView.bounces = NO;

其次,当我滑动滚动时,滚动停止后,滚动条在一秒内没有消失。这对我来说很奇怪,因为当我通常创建一个 UIScrollView 并将其添加到 UIViewController 的 View 时,它会弹跳并且滚动条在停止时立即消失。我尝试更改 UIScrollView 的属性,例如 directionalLockEnabledpagingEnabledcanCancelContentTouchesdelaysContentTouchesdecelerationRate 等。事实上,我已经尝试更改 UIScrollView 的几乎所有属性,但我无法让滚动条立即消失。

如果我尝试将 UIScrollView 而不是 MyView 添加到 UIViewController.view,它会弹跳并且滚动条在停止后立即消失。如果我从 UIScrollView 继承 MyView ,我也会得到正确的行为,但在这种情况下,我无法管理标题标签,因为它会与其他内容一起滚动。

所以这是我的问题:

  1. 你知道我为什么会看到这种行为吗?
  2. 如何获得由 UIView 封装的滚动的“正常”行为?

最佳答案

好的,下面是骇人听闻的代码,所以请忽略我所有的其他问题,但请遵循此模式(westie.jpg = 360x200 的图像)

@interface MyView : UIView
{
UIScrollView *sv;
UILabel *l;
}
-(MyView*)initWithFrame:(CGRect)frame;
@end

@implementation MyView
-(MyView*)initWithFrame:(CGRect)frame;
{
self = [super initWithFrame:frame];
sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,360,200)];
sv.scrollEnabled = YES;
sv.contentSize = CGSizeMake(360*3,200);
[self addSubview:sv];

UIImage *i1 = [UIImage imageNamed:@"westie.jpg"];
UIImageView *iv1 = [[UIImageView alloc] initWithImage:i1];
iv1.frame = CGRectMake(360*0, 0, 360, 200);
[sv addSubview:iv1];
UIImageView *iv2 = [[UIImageView alloc] initWithImage:i1];
iv2.frame = CGRectMake(360*1, 0, 360, 200);
[sv addSubview:iv2];
UIImageView *iv3 = [[UIImageView alloc] initWithImage:i1];
iv3.frame = CGRectMake(360*2, 0, 360, 200);
[sv addSubview:iv3];

l = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];
l.text = @"Hello World";
l.backgroundColor = [UIColor blueColor];
[self addSubview:l];

return self;
}

@结束

稍后,在您的外部 View 创建中:

[window addSubview:[[MyView alloc] initWithFrame:CGRectMake(0, 20, 360, 200)]];

关于UIView 中的 iOS UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652276/

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