我有一个使用Autolayout的自定义tableviewcell,在xib文件中设计。
设计
CustomTableViewCell.h:
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle("Warning");
dialogBuilder.setMessage("You are forced to be offline. Please try to login again.");
dialogBuilder.setCancelable(false);
dialogBuilder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= 23){
if (Settings.canDrawOverlays(context)){
ActivityCollector.finishAll();
Intent intent = new Intent(context, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} else {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
context.startActivity(intent);
}
} else {
ActivityCollector.finishAll();
Intent intent = new Intent(context, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
}
它在桌面视图中工作正常。
我想要做的是在tableviewcell显示之前以编程方式更新CustomView的比率。
@property (weak, nonatomic) IBOutlet UIView *customView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraintRatio;
但此后细胞比例仍为1。 我做错了什么或者我错过了什么?谢谢你的任何建议。
答案 0 :(得分:0)
问题解决了。
我误用了customCell.constraintRatio.constant
。这应该是乘数。
但multiplier
只读。因此,完成我的工作的唯一方法是删除约束并添加新约束
这样做之后,一切正常。
参考: auto layout modify multiplier of constriaint programmatically