我遇到一个问题,我有UIImageView
使用以下约束跨越整个屏幕宽度。
图像采用屏幕宽度,同时获得纵横比(在本例中为正方形)。问题出现在我开始尝试从图像中创建一个圆圈时,我注意到我的UIIMageView
的帧没有正确的值。
由于我通过RoboVM使用Java,你不得不在下面编写代码,因为我正在通过RoboVM使用Java,但只需很少的努力就可以将代码精神上转换为Objective-C,因为它非常简单。
public class MyViewController extends UIViewController {
@IBOutlet private UIImageView myImageView;
@Override public void viewDidLoad() {
System.out.println("Image view width: " + myImageView.getFrame().getWidth());
System.out.println("Superview width: " + this.getView().getFrame().getWidth());
}
}
使用此Controller运行应用程序的结果显示以下内容:
Image view width: 240.0
Superview width: 320.0
当将图像的帧宽减半并将其应用于CALayer#cornerRadius
属性时,图像不会形成完整的圆,但是当使用一半的超视图宽度时(实际上是大小的image)结果是一个完美的圆圈。
答案 0 :(得分:2)
在session = new SessionManager(getApplicationContext());
中,它刚刚从XIB或故事板加载了您的视图,但尚未调整大小。调用viewDidLoad
时,大小应该正确。因此,请尝试将代码放在viewWillAppear
中,看看是否有帮助。
答案 1 :(得分:0)
您需要-20保证金的原因是因为您的超级视图的边距为20,并且默认情况下约束创建为“相对于保证金” - 如果取消选中,则可以设置“实际”约束 - 这种情况为零而不是-20
如果在助理编辑器中选择约束,您将看到用于切换此值的复选框