Ios 分色控制染色颜色
我正在更改所选线段的颜色。它工作正常,但在第一次触摸之前,uisegment control的“染色颜色”设置为默认值 这是更改选定线段颜色的方法。它可以正常工作,但是当片段第一次出现时。它是浅灰色的。然后,当我触摸它时,它开始按照我的需要正常工作 (此段控件作为子视图添加到uialertview)Ios 分色控制染色颜色,ios,uisegmentedcontrol,Ios,Uisegmentedcontrol,我正在更改所选线段的颜色。它工作正常,但在第一次触摸之前,uisegment control的“染色颜色”设置为默认值 这是更改选定线段颜色的方法。它可以正常工作,但是当片段第一次出现时。它是浅灰色的。然后,当我触摸它时,它开始按照我的需要正常工作 (此段控件作为子视图添加到uialertview) -(void)分段值已更改:(UISegmentedControl*)发送方 { 对于(int i=0;i您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的
-(void)分段值已更改:(UISegmentedControl*)发送方
{
对于(int i=0;i您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的代码,当用户第一次触摸它时,它会更改。您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的代码,当用户第一次触摸它时,它会更改。您可以调用ode>SegmentControlValue在viewDidLoad方法中强制更改了方法。如下所示:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.05 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self segmentedControlValueChanged:segmentedControlOne];
});
您可以在viewDidLoad方法中强制调用segmentControlValueChanged
方法。如下所示:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.05 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self segmentedControlValueChanged:segmentedControlOne];
});
真的吗
我用这个代码解决了我的应用程序
- (void)viewDidAppear:(BOOL)animated
{
for(UIView *v in [self.view subviews] )
{
if([v isKindOfClass:[UISegmentedControl class]])
{
// ((UISegmentedControl*)v).enabled=NO;
dispatch_async(dispatch_get_main_queue(),^{
for (int i=0; i<[ ((UISegmentedControl*)v).subviews count]; i++)
{
if ([[((UISegmentedControl*)v).subviews objectAtIndex:i]isSelected] )
{
[[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed: 0/255.0 green:176/255.0 blue:223/255.0 alpha:1.0]];
//[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
// break;
}
else
{
[[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
//[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}
});
}
}
}
-(void)视图显示:(BOOL)动画
{
对于(UIView*v在[self.view子视图]中)
{
if([v iskindof类:[UISegmentedControl类]])
{
//((UISegmentedControl*)v).enabled=否;
dispatch\u async(dispatch\u get\u main\u queue()^{
对于(int i=0;itruy此代码
我用这个代码解决了我的应用程序
- (void)viewDidAppear:(BOOL)animated
{
for(UIView *v in [self.view subviews] )
{
if([v isKindOfClass:[UISegmentedControl class]])
{
// ((UISegmentedControl*)v).enabled=NO;
dispatch_async(dispatch_get_main_queue(),^{
for (int i=0; i<[ ((UISegmentedControl*)v).subviews count]; i++)
{
if ([[((UISegmentedControl*)v).subviews objectAtIndex:i]isSelected] )
{
[[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed: 0/255.0 green:176/255.0 blue:223/255.0 alpha:1.0]];
//[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
// break;
}
else
{
[[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
//[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}
});
}
}
}
-(void)视图显示:(BOOL)动画
{
对于(UIView*v在[self.view子视图]中)
{
if([v iskindof类:[UISegmentedControl类]])
{
//((UISegmentedControl*)v).enabled=否;
dispatch\u async(dispatch\u get\u main\u queue()^{
对于(int i=0;i我自己解决了这个问题。因为alertview只在[alertview show]之后创建所有视图。由于segmentcontrol尚未真正创建,所以不会检测到对segmentcontrol的颜色更改。所以我将segmentcontrol的颜色更改过程延迟到alertview创建之后
[alertview show];
double delayInSeconds = 0.01;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self performSelectorOnMainThread:@selector(segmentValueChanged:) withObject:segControl waitUntilDone:YES];
});
我自己就想出来了。因为alertview只在[alertview show]之后创建所有视图。因为segmentcontrol尚未真正创建,所以不会检测到对segmentcontrol的颜色更改。所以我所做的是将segmentcontrol的颜色更改过程延迟到alertview创建之后
[alertview show];
double delayInSeconds = 0.01;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self performSelectorOnMainThread:@selector(segmentValueChanged:) withObject:segControl waitUntilDone:YES];
});
首次创建/显示视图时,您如何设置色调?[self segmentValueChanged:segControl];我首先调用此方法。它会触发,但更改色调颜色时不会发生任何事情,很抱歉,我忘了提及此片段添加到UIAlertViews中。首次创建/显示视图时,您如何设置色调?[自分段值更改:分段控制];我首先调用此方法。它会触发,但在更改色调颜色时不会发生任何事情。很抱歉,我忘了提及此段添加到UIAlertview中。很抱歉,我忘了提及此段添加到UIAlertview中。另一段添加到主视图中,其内部视图显示,并且工作正常。遇到问题的是在e AlertView无论何时将其添加到任何视图中,您都需要添加其色调。很抱歉,我忘了提及此段添加到UIAlertview中。另一段添加到主视图中,其内部视图显示且工作正常。遇到问题的部分在AlertView中无论何时将其添加到任何视图中,您都需要添加其色调视图。感谢您的回答,但很抱歉,我没有提到它在AlertView中,即使我在uiview中也没有问题。这个问题让我在UIAlertView中没有任何线索谢谢您的回答,但很抱歉,我没有提到它在AlertView中,即使我在uiview中也没有问题。这个问题让我在在我的视野之内