首先,我要以编程方式解决这个布局问题,而不是在故事板中解决这个问题,因为我已经通过编码来定义我的按钮而不是拖拽和放大。通过故事板删除,
我编写了通用iOS应用程序,其中我很少使用TableView。我要在每个UITableViewCell
右边添加一些自定义按钮,或者你可以说我要在单元格的trailing
边缘添加按钮,它在模拟器的iPhone7 Plus中工作得非常好,但是那么iphone 5或5s&其他iOS设备?这是它在iphone7 Plus& iphone 5s
我应该在我的程序(代码)中对布局做什么样的审核,这是我在UITableViewCell
方法中用于在cellForRowAtIndexPath方法中定义4个按钮的代码,
//Favorite Button
UIButton *addtoFavsButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addtoFavsButton setImage:[UIImage imageNamed:@"like"] forState:UIControlStateNormal];
addtoFavsButton.frame = CGRectMake(370.0f, 0.0f, 50.0f, 45.0f);
[cell addSubview:addtoFavsButton];
[addtoFavsButton addTarget:self
action:@selector(addtoFavs:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:addtoFavsButton];
[addtoFavsButton setTag:indexPath.row];
// WebView Button
UIButton *webViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
[webViewButton setImage:[UIImage imageNamed:@"web"] forState:UIControlStateNormal];
webViewButton.frame = CGRectMake(335.0f, 0.0f, 50.0f, 50.0f);
[cell addSubview:webViewButton];
[webViewButton addTarget:self
action:@selector(webView:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:webViewButton];
[webViewButton setTag:indexPath.row];
// Twitter Share Button
UIButton *twitterButton = [UIButton buttonWithType:UIButtonTypeCustom];
[twitterButton setImage:[UIImage imageNamed:@"twitter"] forState:UIControlStateNormal];
twitterButton.frame = CGRectMake(300.0f, 0.0f, 45.0f, 42.0f);
[cell addSubview:twitterButton];
[twitterButton addTarget:self action:@selector(twitterShare:event:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:twitterButton];
//[twitterButton setTag:indexPath.row];
// Facebook Share Button
UIButton *facebookButton = [UIButton buttonWithType:UIButtonTypeCustom];
[facebookButton setImage:[UIImage imageNamed:@"facebook"] forState:UIControlStateNormal];
facebookButton.frame = CGRectMake(265.0f, 0.0f, 45.0f, 42.0f);
[cell addSubview:facebookButton];
[facebookButton addTarget:self
action:@selector(facebookShare:event:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:facebookButton];
建议我如何编程自动布局这些按钮,以便在任何iOS设备中从右侧开始调整所有按钮。
答案 0 :(得分:1)
您正在设置这些按钮的框架,这样无论设备的宽度如何,按钮都会将自身置于其框架变量中定义的(x,y)坐标中。因此,您必须为这些按钮添加自动布局约束,以便在所有设备中正确获得所需的设计。
使用NSLayoutConstraint对象创建所需的自动布局约束,并将其添加到按钮。 请参阅此链接:
答案 1 :(得分:1)
如果您没有使用自动布局,请按照我的回答
<强>步骤1 强>
创建一个用于定义设备宽度的宏
#define WidthCalculation self.view.frame.size.width
<强>步骤2 强>
最初为addtoFavsButton设置框架,它会自动调整屏幕宽度
addtoFavsButton.frame = CGRectMake(WidthCalculation - 60, 0.0f, 50.0f, 45.0f);
此后根据addtoFavsButton
计算其他按钮webViewButton.frame = CGRectMake(WidthCalculation - (addtoFavsButton.frame.origin.x + 50.0f +10), 0.0f, 50.0f, 50.0f);