Ios 如何在UIScrollView中添加多个UIView
我有一个绘制饼图的UIView,我想以编程的方式在UIScrollView中放置3个或4个图表。我该怎么做 我的h文件是这样的Ios 如何在UIScrollView中添加多个UIView,ios,uiscrollview,Ios,Uiscrollview,我有一个绘制饼图的UIView,我想以编程的方式在UIScrollView中放置3个或4个图表。我该怎么做 我的h文件是这样的 @class PieChart; @interface ViewController : UIViewController { } @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; 和m文件 - (void)viewDidLoad { [super viewDidLoad];
@class PieChart;
@interface ViewController : UIViewController {
}
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
和m文件
- (void)viewDidLoad
{
[super viewDidLoad];
[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setCanCancelContentTouches:NO];
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scrollView.clipsToBounds = YES;
scrollView.scrollEnabled = YES;
scrollView.pagingEnabled = YES;
PieChart *chart = [[PieChart alloc]initWithFrame:CGRectZero];
[chart setFrame:CGRectMake(100, 100, 200, 200)];
[scrollView addSubview:chart];
}
将多个子视图添加到
UIScrollView
就像添加单个子视图一样;使用添加子视图:
。您遇到了什么问题?您可以通过以下方式添加它:
[scrollView addSubview:singleView];
如果需要将子视图添加到视图中,则需要使用
[view addSubview:subview]
。这是惯例。
了解框架和边界(视图和子视图的坐标系):
希望有帮助。我现在做的是
PieChart*chart=[[PieChart alloc]init]代码>[滚动视图添加子视图:图表]
失败如果在较大的scrollview中为三个或四个饼图设置框架,则应该可以。注意,您不必将框架限制在屏幕的尺寸上,而是限制在滚动视图的大小上,您可以调整滚动视图以适应所有图表。用于绘制piechart的my uiview类。。我既没有错误也没有图表听起来这只是你的PieChart
中的一个基本问题。我会检查viewDidLoad
,确保你的frame
设置正确,等等。如果这不起作用,你可能想编辑你的问题,包括一些相关的PieChart
代码(特别是viewDidLoad
和你使用的init
方法),我们可能会提供更多建议。在没有代码的情况下,我们无法提供任何建议。另一件事可以尝试:为PieChart
和UIScrollView
对象设置不同的backgroundColor
属性,以查看它们的显示位置。我尝试使用PieChart*chart=[[PieChart alloc]init];[滚动视图添加子视图:图表]代码>但没有运气:[图表设置框架:CGRectMake(100100200200)];它还没有框架。这将把图表设置在坐标(100100)上,大小为200x200Yep,或者initWithFrame
而不是init
,然后setFrame
Yep,我还建议指定图表本身的背景色,以查看其基本视图是否显示。谢谢你的代码,但是我们可能需要PieChart
本身的初始化代码,而不是视图控制器的初始化代码。啊,对不起,我是新手,我不知道。。我很快就会做到的。。Cheeset可能与此无关,但这有点让人困惑,因为你有一个IBOutlet
用于m\u piechart
(然后,您有一个@属性
,对于该属性,您无法指定IBOutlet
,并且没有指定为弱
…同样,如果您在IB中执行此操作,请确保将PieChart
指定为视图的类),然后您不使用它,而是以编程方式创建它。您应该执行其中一个操作(界面生成器或编程方式),但不是两者都有。是的,你是对的。我想手动完成这项工作,后来我决定以编程方式完成。这就是为什么IBOutlet仍然存在的原因。。