Xamarin.iOS UITableViewCell ImageView 上的圆角

Posted

技术标签:

【中文标题】Xamarin.iOS UITableViewCell ImageView 上的圆角【英文标题】:Xamarin.iOS Rounded corners on UITableViewCell ImageView 【发布时间】:2016-08-11 14:59:20 【问题描述】:

我有一个 UITableCell,它有一个 ImageView。我试图给那个 ImageView 圆角。我尝试了以下方法:

    cell.ImageView.ClipsToBounds = true;
    cell.ImageView.Layer.BorderWidth = 1;
    cell.ImageView.Layer.MasksToBounds = true;
    cell.ImageView.Layer.CornerRadius = 20;

但这没有任何效果。谁能用代码示例解释或演示如何实现这种效果?

【问题讨论】:

【参考方案1】:

还有一个问题啊,不过应该和你一样正常,有截图,直接指出问题所在,我可以帮你。

或者只是发布您所做的更详细的代码,然后我也许可以找到问题。

【讨论】:

啊我认为问题是因为我扩展了 UITableViewCell,我已将圆角代码添加到自定义 UITableViewCell 的构造函数中,现在它可以工作了!【参考方案2】:
cell.ImageView.Layer.BorderWidth = 1;
cell.ImageView.Layer.CornerRadius = 20; 
cell.ImageView.Layer.MasksToBounds = true;

尝试在最后屏蔽边界。

【讨论】:

嗨,Evgeny,这没有任何效果。图像仍然呈现没有圆角。 请尝试不使用cell.ImageView.ClipsToBounds = true; 代码行...只需将其注释并重试。【参考方案3】:

ViewCellRenderer

    首先创建你的列表视图

    namespace  MaxenceTest.Renderers  
          
            public  class  MyViewCell  :  ViewCell  
              
                public  static  BindableProperty  CornerRadiusProperty  =               BindableProperty.Create(nameof(CornerRadius),  typeof(double),  typeof(MyViewCell),default(double));  
                public  double  CornerRadius  
                  
                    get    return  (double)GetValue(CornerRadiusProperty);    
                    set    SetValue(CornerRadiusProperty,  value);    
                  
    
            public  static  BindableProperty  BackgroundColorProperty  =  BindableProperty.Create(nameof(BackgroundColor),  typeof(Color),  typeof(MyViewCell),  default(Color));  
            public  Color  BackgroundColor  
              
                get    return  (Color)GetValue(BackgroundColorProperty);    
                set    SetValue(BackgroundColorProperty,  value);    
              
          
    
    

    在您的 Xamarin ios 项目中实现它

    [assembly:  ExportRenderer(typeof(MyViewCell),  typeof(MyViewCellIOS))\]  
    namespace  MaxenceTest.iOS.Renderers  
      
        public  class  MyViewCellIOS  :  ViewCellRenderer  
          
            public  override  UITableViewCell  GetCell(Cell  item,              UITableViewCell  reusableCell,  UITableView  tv)  
              
                UITableViewCell  viewCell  =  base.GetCell(item,  reusableCell,  tv);  
                if(viewCell  !=  null)  
                  
                    if(item  is  MyViewCell  mycell)  
                      
                        UIView  custom  =  new  UIView();  
                        viewCell.ContentView.Layer.BackgroundColor  =                       mycell.BackgroundColor.ToCGColor();  
                        viewCell.ContentView.Layer.CornerRadius  =  new  nfloat(mycell.CornerRadius);  
                      
                  
                return  viewCell;  
              
          
    
    

    在xcml中使用

                    <StackLayout  BackgroundColor="Transparent">  
                        <ListView  
                            x:Name="list"  
                            BackgroundColor="Transparent"  
                            SeparatorColor="Transparent"  
                            SeparatorVisibility="None"  
                            HasUnevenRows="true">  
                            <ListView.ItemTemplate>  
                                <DataTemplate>  
                                    <myControls:MyViewCell  CornerRadius="20"       BackgroundColor="Fuchsia">  
                                        <Grid>  
                                            <Grid.RowDefinitions>  
                                                <RowDefinition  Height="*"/>  
                                            </Grid.RowDefinitions>      
                                            <StackLayout  Margin="10">  
                                                <Label  FontSize="20"  TextColor="White"    FontAttributes="Bold"  Text="Binding  title"/>  
                                                <Label  FontSize="15"  TextColor="White"  Text="Binding  resume"/>  
                                            </StackLayout>  
                                        </Grid>  
                                    </myControls:MyViewCell>  
                                </DataTemplate>  
                            </ListView.ItemTemplate>  
                        </ListView>  
                    </StackLayout>
    

    享受

【讨论】:

以上是关于Xamarin.iOS UITableViewCell ImageView 上的圆角的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机

Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?

使用Xamarin Effect删除Xamarin.iOS中TextEntry上的圆角

Xamarin.iOS 和 RFComm

Xamarin.IOS 和 Signalr 推送通知

Xamarin.Ios BeingBackgroundTask 参数