mirror of
https://github.com/bitwarden/mobile.git
synced 2024-11-23 11:45:38 +01:00
accessible font sizes
This commit is contained in:
parent
dc91624597
commit
a2960c45bc
40
src/iOS/Renderers/CustomButtonRenderer.cs
Normal file
40
src/iOS/Renderers/CustomButtonRenderer.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using System.ComponentModel;
|
||||
using Bit.iOS.Renderers;
|
||||
using Bit.iOS.Utilities;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Button), typeof(CustomButtonRenderer))]
|
||||
namespace Bit.iOS.Renderers
|
||||
{
|
||||
public class CustomButtonRenderer : ButtonRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
if(Control != null && e.NewElement is Button)
|
||||
{
|
||||
UpdateFont();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
base.OnElementPropertyChanged(sender, e);
|
||||
if(e.PropertyName == Button.FontProperty.PropertyName)
|
||||
{
|
||||
UpdateFont();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateFont()
|
||||
{
|
||||
var pointSize = iOSHelpers.GetAccessibleFont<Button>(Element.FontSize);
|
||||
if(pointSize != null)
|
||||
{
|
||||
Control.Font = UIFont.FromDescriptor(Element.Font.ToUIFont().FontDescriptor, pointSize.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
src/iOS/Renderers/CustomEditorRenderer.cs
Normal file
21
src/iOS/Renderers/CustomEditorRenderer.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using Bit.iOS.Renderers;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Editor), typeof(CustomEditorRenderer))]
|
||||
namespace Bit.iOS.Renderers
|
||||
{
|
||||
public class CustomEditorRenderer : EditorRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
if(e.NewElement is Editor)
|
||||
{
|
||||
var descriptor = UIFontDescriptor.PreferredBody;
|
||||
Control.Font = UIFont.FromDescriptor(descriptor, descriptor.PointSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
49
src/iOS/Renderers/CustomEntryRenderer.cs
Normal file
49
src/iOS/Renderers/CustomEntryRenderer.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using System.ComponentModel;
|
||||
using Bit.iOS.Renderers;
|
||||
using Bit.iOS.Utilities;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))]
|
||||
namespace Bit.iOS.Renderers
|
||||
{
|
||||
public class CustomEntryRenderer : EntryRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
if(Control != null && e.NewElement is Entry)
|
||||
{
|
||||
UpdateFontSize();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
base.OnElementPropertyChanged(sender, e);
|
||||
if(e.PropertyName == Entry.FontAttributesProperty.PropertyName ||
|
||||
e.PropertyName == Entry.FontFamilyProperty.PropertyName ||
|
||||
e.PropertyName == Entry.FontSizeProperty.PropertyName)
|
||||
{
|
||||
UpdateFontSize();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateFontSize()
|
||||
{
|
||||
var pointSize = iOSHelpers.GetAccessibleFont<Entry>(Element.FontSize);
|
||||
if(pointSize != null)
|
||||
{
|
||||
if(!string.IsNullOrWhiteSpace(Element.FontFamily))
|
||||
{
|
||||
Control.Font = UIFont.FromName(Element.FontFamily, pointSize.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
Control.Font = UIFont.FromDescriptor(UIFontDescriptor.PreferredBody, pointSize.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
42
src/iOS/Renderers/CustomLabelRenderer.cs
Normal file
42
src/iOS/Renderers/CustomLabelRenderer.cs
Normal file
@ -0,0 +1,42 @@
|
||||
using System.ComponentModel;
|
||||
using Bit.iOS.Renderers;
|
||||
using Bit.iOS.Utilities;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Label), typeof(CustomLabelRenderer))]
|
||||
namespace Bit.iOS.Renderers
|
||||
{
|
||||
public class CustomLabelRenderer : LabelRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
if(Control != null && e.NewElement is Label)
|
||||
{
|
||||
UpdateFont();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
base.OnElementPropertyChanged(sender, e);
|
||||
if(e.PropertyName == Label.FontProperty.PropertyName ||
|
||||
e.PropertyName == Label.TextProperty.PropertyName ||
|
||||
e.PropertyName == Label.FormattedTextProperty.PropertyName)
|
||||
{
|
||||
UpdateFont();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateFont()
|
||||
{
|
||||
var pointSize = iOSHelpers.GetAccessibleFont<Label>(Element.FontSize);
|
||||
if(pointSize != null)
|
||||
{
|
||||
Control.Font = UIFont.FromDescriptor(Element.Font.ToUIFont().FontDescriptor, pointSize.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
src/iOS/Renderers/CustomPickerRenderer.cs
Normal file
21
src/iOS/Renderers/CustomPickerRenderer.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using Bit.iOS.Renderers;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
|
||||
namespace Bit.iOS.Renderers
|
||||
{
|
||||
public class CustomPickerRenderer : PickerRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
if(e.NewElement is Picker)
|
||||
{
|
||||
var descriptor = UIFontDescriptor.PreferredBody;
|
||||
Control.Font = UIFont.FromDescriptor(descriptor, descriptor.PointSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
src/iOS/Utilities/iOSHelpers.cs
Normal file
31
src/iOS/Utilities/iOSHelpers.cs
Normal file
@ -0,0 +1,31 @@
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Bit.iOS.Utilities
|
||||
{
|
||||
public static class iOSHelpers
|
||||
{
|
||||
public static System.nfloat? GetAccessibleFont<T>(double size)
|
||||
{
|
||||
var pointSize = UIFontDescriptor.PreferredBody.PointSize;
|
||||
if(size == Device.GetNamedSize(NamedSize.Large, typeof(T)))
|
||||
{
|
||||
pointSize *= 1.3f;
|
||||
}
|
||||
else if(size == Device.GetNamedSize(NamedSize.Small, typeof(T)))
|
||||
{
|
||||
pointSize *= .8f;
|
||||
}
|
||||
else if(size == Device.GetNamedSize(NamedSize.Micro, typeof(T)))
|
||||
{
|
||||
pointSize *= .6f;
|
||||
}
|
||||
else if(size != Device.GetNamedSize(NamedSize.Default, typeof(T)))
|
||||
{
|
||||
// not using dynamic font sizes, return
|
||||
return null;
|
||||
}
|
||||
return pointSize;
|
||||
}
|
||||
}
|
||||
}
|
@ -113,11 +113,17 @@
|
||||
<Compile Include="AppDelegate.cs" />
|
||||
<Compile Include="Migration\KeyChainStorageService.cs" />
|
||||
<Compile Include="NFCReaderDelegate.cs" />
|
||||
<Compile Include="Renderers\CustomPickerRenderer.cs" />
|
||||
<Compile Include="Renderers\CustomEntryRenderer.cs" />
|
||||
<Compile Include="Renderers\CustomEditorRenderer.cs" />
|
||||
<Compile Include="Renderers\CustomButtonRenderer.cs" />
|
||||
<Compile Include="Renderers\CustomLabelRenderer.cs" />
|
||||
<Compile Include="Renderers\CustomContentPageRenderer.cs" />
|
||||
<Compile Include="Renderers\HybridWebViewRenderer.cs" />
|
||||
<Compile Include="Services\DeviceActionService.cs" />
|
||||
<Compile Include="Services\iOSPushNotificationHandler.cs" />
|
||||
<Compile Include="Services\iOSPushNotificationService.cs" />
|
||||
<Compile Include="Utilities\iOSHelpers.cs" />
|
||||
<None Include="Entitlements.plist" />
|
||||
<None Include="Info.plist" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user