2017-02-22 10 views
0

私はandroid、ios、windows 10およびwindows 8.1で動作するXamarin Forms PCLプロジェクトを使用してアプリケーションを作成しました。Xamarinフォーム:IOSのプログレスバーの高さの問題

私はProgresbarコントロールを使用していましたが、高さを上げるためにカスタムレンダラーを作っていました。 IOS-

using CoreGraphics; 
using MyProject.iOS; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.iOS; 
using FISE.ViewModels; 

[assembly: ExportRenderer(typeof(CustomProgressbar), typeof(CustomProgressBarRenderer))] 
namespace MyProject.iOS 
{ 

    public class CustomProgressBarRenderer : ProgressBarRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<ProgressBar> e) 
     { 
      base.OnElementChanged(e); 
      Control.ProgressTintColor = Color.FromHex(Constant.Primarycolor).ToUIColor(); 
      Control.TrackTintColor = Color.FromHex(Constant.Secondary1Color).ToUIColor(); 

     } 
     public override void LayoutSubviews() 
     { 
      base.LayoutSubviews(); 
      var X = 1f; 
      var Y = 10.0f; 
      CGAffineTransform transform = CGAffineTransform.MakeScale(X, Y); 
      // this.Control.Transform = transform; 
      this.Transform = transform; 

      //this.ClipsToBounds = true; 
      //this.Layer.MasksToBounds = true; 

     } 
    } 
} 

PCL-

using Xamarin.Forms; 

namespace MyProject.ViewModels 
{ 
    public class CustomProgressbar : ProgressBar 
    { 
    } 
} 

私は、ProgressBarの高さを増大させるため、このレンダラを使用していました。最初に私はthis.Control.Transform = transform;を試しましたが、私は私のために働いていませんでしたthis.Transform = transform;それは私のために働いた。

今度は5つのプログレスバーを縦に積み重ねました。

  <Grid Padding="20,3,0,0" x:Name="RatingCountDisplayGrid" RowSpacing="23" ColumnSpacing="10" Grid.Row="0" Grid.Column="1"> 
       <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 

       <local1:CustomProgressbar Grid.Row="0" Grid.Column="0" HeightRequest="20" x:Name="fiveStarRating" /> 
       <Label x:Name="fiveStarRatingCount" Grid.Row="0" Grid.Column="1" FontAttributes="Bold" FontSize="14" Style="{DynamicResource LabelNormal3}"></Label> 
       <local1:CustomProgressbar Grid.Row="1" Grid.Column="0" HeightRequest="20" x:Name="fourStarRating"/> 
       <Label x:Name="fourStarRatingCount" Grid.Row="1" Grid.Column="1" FontAttributes="Bold" FontSize="14" Style="{DynamicResource LabelNormal3}"></Label> 
       <local1:CustomProgressbar Grid.Row="2" Grid.Column="0" HeightRequest="20" x:Name="threeStarRating"/> 
       <Label x:Name="threeStarRatingCount" Grid.Row="2" Grid.Column="1" FontAttributes="Bold" FontSize="14" Style="{DynamicResource LabelNormal3}"></Label> 
       <local1:CustomProgressbar Grid.Row="3" Grid.Column="0" HeightRequest="20" x:Name="twoStarRating"/> 
       <Label x:Name="twoStarRatingCount" Grid.Row="3" Grid.Column="1" FontAttributes="Bold" FontSize="14" Style="{DynamicResource LabelNormal3}"></Label> 
       <local1:CustomProgressbar Grid.Row="4" Grid.Column="0" HeightRequest="20" x:Name="oneStarRating"/> 
       <Label x:Name="oneStarRatingCount" Grid.Row="4" Grid.Column="1" FontAttributes="Bold" FontSize="14" Style="{DynamicResource LabelNormal3}"></Label> 
      </Grid> 

それは完璧に見えたが、2つの進捗バーは、親コンテナの外に行くのtransformプロパティを適用した後transformプロパティを適用する前にthis-

enter image description here

のように見えます。あなたが行くここ

答えて

0

... このソリューションをお試しください:

protected override void OnElementChanged(
    ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e) 
    { 
     base.OnElementChanged(e); 

     Control.ProgressTintColor = Color.FromHex("#01BC73").ToUIColor();// Color..FromHex("#254f5e").ToUIColor(); 
     Control.TrackTintColor = Color.White.ToUIColor(); 
     //Control.SetProgress(1, true); 

     //Control.Hidden = false; 
    } 

    public override CGSize SizeThatFits(CGSize size) 
    { 
     //size.Height = 100; 
     return base.SizeThatFits(size); 
    } 

    public override void LayoutSubviews() 
    { 
     //base.LayoutSubviews(); 

     //var X = 3.0f; 
     //var Y = 20.0f; // This changes the height 

     //CGAffineTransform transform = CGAffineTransform.MakeScale(X, Y); 
     //Control.Transform = transform; 

     //UpdateNativeWidget(); 
     CGAffineTransform transform = CGAffineTransform.MakeScale(1.27f, 80.0f); 
     transform.TransformSize(this.Frame.Size); 
     this.Transform = transform; 

    } 
+0

あなたの答えを教えてください! – Mazz

+0

@NoumanUllah SiddiquIここでSizeThatFitsは使用されていますか? – Sonali

+0

@ NoumanUllah SiddiquI高さを増やしてみましたが、親コンテナから5つのプログレスバーのうち4つが増えています。 – Sonali

関連する問題