问题
我UISegmentedControl
为 iOS 应用程序创建了一个自定义组件,放置在导航栏上,有两个部分。正如人们所预料的那样,当手机旋转到横向时,组件的高度会稍低。
但是,问题是在旋转到横向后,分段控件即使在旋转回纵向后仍保持其较短的高度。我感谢您的帮助。
这是initWithCoder:
方法内部的(简化的)代码:
UIImage *bg = [[UIImage imageNamed:@"button-bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
UIImage *bgH = [[UIImage imageNamed:@"button-bg-h"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
[self setBackgroundImage:bg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self setBackgroundImage:bg forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];
[self setBackgroundImage:bgH forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[self setBackgroundImage:bgH forState:UIControlStateSelected barMetrics:UIBarMetricsLandscapePhone];
==============================
临时解决方法
这是我的临时解决方法,直到找到更好的解决方案:
在视图控制器中,我有一个名为 的插座segmentControl
,链接到相关UISegmentedControl
问题。我还创建了一个属性,如下所示:
@property CGRect segmentedControlPortraitOrientationFrame;
方法内部viewDidLoad
:
self.segmentedControlPortraitOrientationFrame = self.segmentControl.frame;
didRotateFromInterfaceOrientation:
然后使用以下实现覆盖:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[super didRotateFromInterfaceOrientation:interfaceOrientation];
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
self.segmentControl.frame = self.segmentedControlPortraitOrientationFrame;
}
解决方法假定应用程序总是首先以纵向加载,我认为这是正确的,只要应用程序支持纵向。如我错了请纠正我。