ScrollView 图片addSubview 问题
ScrollView image addSubview issue
我正在尝试在 ScrollView
中添加一个 imageView,但我总是将 ScrollView
设为空。请问我的问题在哪里?虽然我添加了委托方法 <UIScrollViewDelegate>
也在故事板中建立了连接。
我的代码:
- (void) viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void) slider {
_scrlView = [[UIScrollView alloc]init];
_scrlView.backgroundColor = [UIColor blackColor];
_scrlView.pagingEnabled = YES;
_scrlView.delegate = self;
_scrlView.showsHorizontalScrollIndicator = false;
_scrlView.layer.cornerRadius = 2;
_scrlView.contentSize = CGSizeMake(_scrlView.frame.size.width * 3, _scrlView.frame.size.height);
_img1 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*0),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img2 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*1),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img3 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*2),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img1 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
_img2 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
_img3 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
[_scrlView addSubview:_img1];
[_scrlView addSubview:_img2];
[_scrlView addSubview:_img3];
}
首先,您没有将 scrollView 添加到任何视图,因此它不会显示在屏幕上。
二、这个:
_scrlView = [[UIScrollView alloc]init];
用 CGRectZero
创建一个 scrollView 就像写一样:
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,0,0)];
这意味着 contentSize 也是 CGRectZero
。
编辑:如果您不想覆盖 scrollView 的创建(因为您已经在 Interface Builder 中设置了它),请删除行 _scrlView = [[UIScrollView alloc]init];
。
但是如果你在故事板中使用自动布局,你应该在 viewDidLayoutSubviews.
中调用 [self slider]
您需要先设置框架,以获取其宽度和高度,
- (void)viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void)slider{
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(YOUR_X, YOUR_X, YOUR_WIDTH, YOUR_HIEGHT)];
// do this if you have not added Scrollview in storyboard, if Added, then no need to invoke, init by line [[UIScrollView alloc] init] ;
...
...
[self.view addSubview:_scrlView];
}
我建议再做一件事,从 UIView
的 viewDidAppear
方法调用您的 slider
方法
享受编码!!
如果没有使用storyboard,需要分配ScrollView。同样在这种情况下,指定一个框架:
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
您正在重新分配imageviews,分配一次后尝试设置image。
另一件事:不要再次初始化滚动视图。
- (void)viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void)slider{
_scrlView.backgroundColor = [UIColor blackColor];
_scrlView.pagingEnabled = YES;
_scrlView.delegate = self;
_scrlView.showsHorizontalScrollIndicator = false;
_scrlView.layer.cornerRadius = 2;
_scrlView.contentSize = CGSizeMake(_scrlView.frame.size.width * 3, _scrlView.frame.size.height);
_img1 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*0),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img2 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*1),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img3 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*2),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
[_img1 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_img2 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_img3 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_scrlView addSubview:_img1];
[_scrlView addSubview:_img2];
[_scrlView addSubview:_img3];
}
我的回复是
如果您没有使用 Storyboard 或 Interface builder ,也未选中自动布局,请在分配后设置 uiscrollview 的框架,并对一张图像仅使用一次 alloc init 。在 scrollview 上添加图像,在 superview 上添加 scrollview
如果您没有使用 Storyboard 或 Interface builder 并且选中了自动布局,则对滚动视图和图像视图设置适当的约束。读这个
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
我正在尝试在 ScrollView
中添加一个 imageView,但我总是将 ScrollView
设为空。请问我的问题在哪里?虽然我添加了委托方法 <UIScrollViewDelegate>
也在故事板中建立了连接。
我的代码:
- (void) viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void) slider {
_scrlView = [[UIScrollView alloc]init];
_scrlView.backgroundColor = [UIColor blackColor];
_scrlView.pagingEnabled = YES;
_scrlView.delegate = self;
_scrlView.showsHorizontalScrollIndicator = false;
_scrlView.layer.cornerRadius = 2;
_scrlView.contentSize = CGSizeMake(_scrlView.frame.size.width * 3, _scrlView.frame.size.height);
_img1 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*0),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img2 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*1),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img3 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*2),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img1 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
_img2 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
_img3 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1234.jpg"]];
[_scrlView addSubview:_img1];
[_scrlView addSubview:_img2];
[_scrlView addSubview:_img3];
}
首先,您没有将 scrollView 添加到任何视图,因此它不会显示在屏幕上。
二、这个:
_scrlView = [[UIScrollView alloc]init];
用 CGRectZero
创建一个 scrollView 就像写一样:
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,0,0)];
这意味着 contentSize 也是 CGRectZero
。
编辑:如果您不想覆盖 scrollView 的创建(因为您已经在 Interface Builder 中设置了它),请删除行 _scrlView = [[UIScrollView alloc]init];
。
但是如果你在故事板中使用自动布局,你应该在 viewDidLayoutSubviews.
[self slider]
您需要先设置框架,以获取其宽度和高度,
- (void)viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void)slider{
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(YOUR_X, YOUR_X, YOUR_WIDTH, YOUR_HIEGHT)];
// do this if you have not added Scrollview in storyboard, if Added, then no need to invoke, init by line [[UIScrollView alloc] init] ;
...
...
[self.view addSubview:_scrlView];
}
我建议再做一件事,从 UIView
viewDidAppear
方法调用您的 slider
方法
享受编码!!
如果没有使用storyboard,需要分配ScrollView。同样在这种情况下,指定一个框架:
_scrlView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
您正在重新分配imageviews,分配一次后尝试设置image。
另一件事:不要再次初始化滚动视图。
- (void)viewDidLoad {
[super viewDidLoad];
[self slider];
}
-(void)slider{
_scrlView.backgroundColor = [UIColor blackColor];
_scrlView.pagingEnabled = YES;
_scrlView.delegate = self;
_scrlView.showsHorizontalScrollIndicator = false;
_scrlView.layer.cornerRadius = 2;
_scrlView.contentSize = CGSizeMake(_scrlView.frame.size.width * 3, _scrlView.frame.size.height);
_img1 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*0),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img2 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*1),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
_img3 = [[UIImageView alloc] initWithFrame:CGRectMake((_scrlView.frame.size.width*2),0,_scrlView.frame.size.width,_scrlView.frame.size.height)];
[_img1 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_img2 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_img3 setImage:[UIImage imageNamed:@"1234.jpg"]];
[_scrlView addSubview:_img1];
[_scrlView addSubview:_img2];
[_scrlView addSubview:_img3];
}
我的回复是
如果您没有使用 Storyboard 或 Interface builder ,也未选中自动布局,请在分配后设置 uiscrollview 的框架,并对一张图像仅使用一次 alloc init 。在 scrollview 上添加图像,在 superview 上添加 scrollview
如果您没有使用 Storyboard 或 Interface builder 并且选中了自动布局,则对滚动视图和图像视图设置适当的约束。读这个
https://developer.apple.com/library/ios/technotes/tn2154/_index.html