我需要为我的应用程序支持“横向”和“纵向”方向,并且冒险尝试使用单个UIView。
当我第一次模拟应用程序时,它显示结果没有问题。但是,当我将方向更改为横向时,会出现问题。
我第一次以纵向运行该应用程序:
当我将方向更改为横向时:
请注意“信息”选项卡附近的左下角。
当我将方向更改回纵向时:
情况变得更糟。
我正在使用的代码
- (void)updateLayoutForNewOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
CGFloat height = CGRectGetHeight([[UIScreen mainScreen] bounds]);
CGFloat width = CGRectGetWidth([[UIScreen mainScreen] bounds]);
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
NSLog(@"Portrait");
[self iPhoneUserInterfacePortrait:width height:height];
}
else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
NSLog(@"Landscape");
[self iPhoneUserInterfaceLandscape:width height:height];
}
}
- (void)iPhoneUserInterfacePortrait:(CGFloat)width height:(CGFloat)height
{
UITextView *descriptionTextView = [[UITextView alloc] initWithFrame:CGRectMake(0.0, 0.0, width - 100.0, height - 300.0)];
[self makeBorder:descriptionTextView];
[self setInformation:descriptionTextView];
[self.view addSubview:descriptionTextView];
}
- (void)iPhoneUserInterfaceLandscape:(CGFloat)width height:(CGFloat)height
{
UITextView *descriptionTextView = [[UITextView alloc] initWithFrame:CGRectMake(0.0, 0.0, width + 230, height - 368.0)];
[self makeBorder:descriptionTextView];
[self setInformation:descriptionTextView];
[self.view addSubview:descriptionTextView];
}
- (void)makeBorder:(UITextView *)descriptionTextView
{
descriptionTextView.layer.borderWidth = 3.0;
descriptionTextView.layer.cornerRadius = 15.0;
descriptionTextView.layer.borderColor = [[UIColor grayColor] CGColor];
[self.view addSubview:descriptionTextView];
}
最佳答案
您只需要添加几个视图。
[self.view addSubview:descriptionTextView];
为了摆脱这一行,您可以将字段
descriptionTextView
添加到ViewController子类中,并更改该文本视图的框架,而无需在self.view
中添加/删除它。另外,您应该尝试使用“自动调整大小”蒙版,以查看是否可以在不手动更改帧的情况下获得所需的结果。
而且您应该小心使用这些常量:在3.5英寸和4.0英寸模拟器设备上尝试使用您的应用程序。
关于iphone - 重叠的UITextView边框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15111722/