我正在尝试以编程方式添加一些视图,根据我的理解,您需要声明视图的大小。
例如:
UITableView table = new UITableView(new CGRect(50, 0, 200, 100));
this.View.AddSubview(table);
但如果您不知道尺寸怎么办?如果这取决于动态数据怎么办?容器是否会根据需要简单扩展?
我正在尝试构建购物车界面。主要有3个部分:
包含购物篮标题的TableView(例如“产品名称”,“数量”等)。
动态尺寸表,其大小取决于其中包含的产品数量。
购物车下方有一些结帐按钮。
这是我想看到的一个非常粗略的样本。白色部分是动态区域,它将根据有多少项目而增长。
目前我正在做的是为标题设置一个UITableView:
tableForHeaders = new UITableView(new CGRect(0, 0, screenWidth, 50));
tableForHeaders.SeparatorStyle = UITableViewCellSeparatorStyle.None;
tableForHeaders.Source = new UIShoppingCartHeaderTable.TableSource(headerRow);
this.View.AddSubview(tableForHeaders);
然后我为订单项创建了另一个表(我不会厌倦我的TableSource实现):
tableForRows = new UITableView(new CGRect(0, 50, screenWidth, this.View.Frame.GetMaxY()));
tableForRows.SeparatorStyle = UITableViewCellSeparatorStyle.None;
this.View.AddSubview(tableForRows);
最后,我正在尝试添加按钮:
btnCheckout = new UIButton(new CGRect(0, 50 + tableForRows.ContentSize.Height, screenWidth, 50))
{
BackgroundColor = UIColor.Red
};
btnCheckout.SetTitle("Checkout", UIControlState.Normal);
btnCheckout.SetTitleColor(UIColor.White, UIControlState.Normal);
btnContinue = new UIButton(new CGRect(0, 100 + tableForRows.ContentSize.Height, screenWidth, 50))
{
BackgroundColor = UIColor.Red
};
btnContinue.SetTitle("Continue", UIControlState.Normal);
btnContinue.SetTitleColor(UIColor.White, UIControlState.Normal);
this.View.AddSubview(btnCheckout);
this.View.AddSubview(btnContinue);
我将tableForRows的高度设置为GetMaxY() - 因为我认为这可能是让它尽可能大的最好方法。然后我尝试将按钮的高度设置为ContentSize.Height。再说一次,我确信我做错了,只是不确定如何逻辑地做到这一点。
答案 0 :(得分:0)
如果您想要在应用中使用完整尺寸的视图,那就像这样
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HT [UIScreen mainScreen].bounds.size.height
tableViewForActivities=[[UITableView alloc]init];
tableViewForActivities.frame=CGRectMake(0, 0, SCREEN_WIDTH,SCREEN_HT);
suppose width=50 hight =50
如果您想要在中心观看,那么通过给出宽度,它将在任何iOS设备中自动调整
view= [[UIView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-width)/2, 0, width, width)];
谢谢
答案 1 :(得分:0)
你可以把它放到
view2 = [[UIView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-width)/2, CGRectGetMaxY(view.frame), width, width)];
我认为这会对你有所帮助